如何用vb遍历一个文件夹下的所有文件包括自文件夹

如何用vb遍历一个文件夹下的所有文件包括自文件夹,第1张

Dim fso As Object, fd As Object, f As Object

Set fso = CreateObject("Scripting.FileSystemObject")

Set fd = fso.GetFolder("要处理文晌码件夹全路径名友液写")

For Each f In fd.Files

'遍历文件进行 *** 作

'其f.Name文件名f.Path文件路径

'f.Size文件f.Type文件类型等等

'防止卡顿循环用面行:好谨物

'DoEvents

Next

Set fd = Nothing

Set fso = Nothing

-

首先一个基本概念要先搞清楚:在FAT32文件系统中,一个文件夹内放的文件及子文件夹数量的上限是65534个(如果用了长文件名,这个数量会减少),而在NTFS文件系统中,这个值就变为4G-1即40多亿,几乎是无限了。你说的15万个文件的文件夹,那很显然是NTFS系统的。

其次,VB6是上世纪末出生的老古董软件,是32位的程序开发语言,它诞生的时候,FAT32是当时最常见也是最先进的文件系统,所以VB6也是按FAT32来 *** 作文件的,再考虑到要兼容长文件名,所以VB6本身的控件和函数在一个文件夹中所能 *** 作的文件数量限制是32767个(折半)。

因此,你这15万个文件的文件夹是无法用VB本身自带的控件或函数来遍历的启宴,只能则枯使用第三方控件或组件,比如大名鼎鼎的FSO:

Dim fso As Object, fd As Object, f As Object

Set fso = CreateObject("Scripting.FileSystemObject")

Set fd = fso.GetFolder("要处理的文件夹全路径名写在这")

For Each f In fd.Files

    '这里是对遍悄盯银历出的每个文件进行 *** 作

    '其中f.Name是文件名,f.Path是文件路径,

    'f.Size是文件大小,f.Type是文件类型,等等

    '为了防止卡顿,可以在这个循环里用下面这行:

    'DoEvents

Next

Set fd = Nothing

Set fso = Nothing

我没测试,因为我没有这么多文件的文件夹。

如果这个方法也不行,那就只能用API了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8170924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存