欢迎访问服务器技术网-www.fuwuqijishu.com

vb怎么实现扫描指定文件夹下的所有文件,

软件 fuwuqijishu 2年前 (2022-10-01) 10次浏览 0个评论 扫描二维码

关于vb怎么实现扫描指定文件夹下的所有文件,包括文件夹里的文件夹的文件举个例子说,比如我要搜索一个文件夹下的所有音乐文件,包括次级文件夹里的。的问题

在VB6中,找(或新建)个模块,把如下代码放进去:
Private?Type?SearchFilesDynamicDatas
????Results?????As?Collection
????CallTimes???As?Long
????CanCallBack?As?Boolean
End?Type
Private?SFDD?As?SearchFilesDynamicDatas
Public?Function?SearchFiles(ByVal?InWhichPath?As?String,?ByRef?LikeFormat?As?Variant,?Optional?ByVal?IncludeChildrenPath?As?Boolean?=?False,?_
????????????????????????????Optional?ByRef?CallBackObject?As?Object?=?Nothing,?Optional?ByVal?CallBackMethodName?As?String?=?”FileSearching”)?As?Collection
????Dim?P?As?String,?Paths?As?Collection,?I?As?Long,?PR?As?Collection,?J?As?Long,?Cancel?As?Boolean
????On?Local?Error?Resume?Next
????
????If?SFDD。
CallTimes?=?0?Then
????????CallByName?CallBackObject,?CallBackMethodName,?VbMethod
????????SFDD。CanCallBack?=?Err。
Number?=?449
????????Set?SFDD。Results?=?New?Collection
????End?If
????SFDD。CallTimes?=?SFDD。
CallTimes? ?1?????’调用本函数:开始 1,结束-1,用以判断是外部调用,还是本函数自己的嵌套调用
????
????’查找文件和目录
????Set?Paths?=?New?Collection
????P?=?Dir(InWhichPath?&?”*。
*”,?vbNormal?Or?vbHidden?Or?vbReadOnly?Or?vbSystem?Or?vbDirectory)
????While?Len(P)?>?0
????????If?P??”。
。”?Then
????????????If?(GetAttr(InWhichPath?&?””?&?P)?And?vbDirectory)?=?vbDirectory?Then
????????????????Paths。
Add?InWhichPath?&?””?&?P
????????????????If?Paths。Count?Mod?100?=?0?Then?DoEvents
????????????ElseIf?UCase(P)?Like?UCase(LikeFormat)?Then
????????????????SFDD。
Results。Add?InWhichPath?&?””?&?P
????????????????If?SFDD。CanCallBack?=?False?Then?If?SFDD。Results。Count?Mod?100?Then?DoEvents
????????????End?If
????????????If?SFDD。
CanCallBack?Then
????????????????CallByName?CallBackObject,?CallBackMethodName,?VbMethod,?InWhichPath?&?””?&?P,?Cancel
????????????????If?Cancel?Then?Exit?Function
????????????End?If
????????End?If
????????P?=?Dir
????Wend
????If?(Paths。
Count?>?0)?And?IncludeChildrenPath?Then
????????For?I?=?1?To?Paths。Count
????????????SearchFiles?Paths(I),?LikeFormat,?True,?CallBackObject,?CallBackMethodName
????????Next
????End?If
????
????SFDD。
CallTimes?=?SFDD。CallTimes?-?1
????If?SFDD。CallTimes?=?0?Then
????????Set?SearchFiles?=?SFDD。Results
????????Set?SFDD。
Results?=?Nothing
????End?If
????Err。Clear
End?Function
然后,你可以调用SearchFiles函数来得到指定目录中的所有文件名符合指定格式的文件名的集合。

参数,说明:
InWhichPath:在哪个目录中搜索
LikeFormat:搜索那种格式的文件名
????例如包含通配符的:”*。bmp”=搜索所有位图文件
????????????????????????????????”A??C*。
txt”=搜索所有第一个字母为A,第4个字母为C的文本文件
????????????????????????????????”*。*”=所有文件
IncludeChildrenPath:是否包含子目录(可选参数,默认不包含子目录)
CallBackObject:回调函数对象(可选参数,默认为无回调对象),该参数可以为窗体实例或支持事件回调的类实例。

CallBackMethodName:回调函数名(可选参数,默认名为:FileSearching)
????CallBackObject和CallBackMethodName必须成对使用,否则将不会回调。

????例如回调函数在Form1中,则需要在Form1中编写如下代码:
????????Public?Sub?FileSearching(ByVal?FullName?As?String,ByRef?Cancel?As?Boolean)
????????????’FullName:刚刚搜索到的文件全名(包含路径和文件名),你可以用来显示在某处
????????????’Cancel:是否取消搜索过程
????????End?Sub
函数返回值:
????类型:集合(Collection),如果不会用集合,去查MSDN。

????子集:所有搜索到的文件全名(包含路径和文件名)
这个函数我一边写,一边调试,已经没有问题了,可以正常使用,但某些你的程序没有权限读写的目录是搜不出来东西的。

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

Warning: error_log(/www/wwwroot/fuwiqijishu/wp-content/plugins/spider-analyser/#log/log-2618.txt): failed to open stream: No such file or directory in /www/wwwroot/fuwiqijishu/wp-content/plugins/spider-analyser/spider.class.php on line 2900