【 tulaoshi.com - 编程语言 】
在VB中要实现查找文件功能,我们可以利用VB的DIR函数进行递归来实现。每次使用DIR函数后,比较是否有要查找的文件,再检查是否有子目录,若有,利用递归继续查找,这样可对整个盘进行查找。
下面是一个例子,查找DOS目录下的所有EXE文件,统计EXE文件的数目并列出文件名。本程序会查找当前路径下的所有文件和子目录,与WIN95的“包含子文件夹”的查找功能类似。
程序与注释如下:
1.在窗体中加一命令按钮Command1,Caption=查找示例,双击此按钮,写如下代码:
PrivateSubCommand1-Click()
Dimff()AsString′定义一个字符串数组用来保存找到的文件名称
DimfnAsLong′保存找到的文件数目
fn=TreeSearch(″C:%%dos″,″*.exe″,ff())
Print″找到文件数目为″;fn
ForI=1Tofn
Printff(I)
Next
EndSub
2.插入一模块Modulel.bas,写如下代码:
OptionExplicit
PublicFunctionTreeSearch(ByValsPathAsString,ByValsFileSpecAsString,sFiles()AsString)
AsLong
Static1FilesAsLong′文件数目
DimsDir AsString
DimsSubDirs()AsString′存放子目录名称
Dim1IndexAsLong
IfRight(sPath,1)″%%″ThensPath=sPath&″%%″
sDir=Dir(sPath&sFileSpec)
′获得当前目录下文件名和数目
DoWhileLen(sDir)
1Files=1Files+1
ReDimPreservesFiles(1To1Files)
sFiles(1Files)=sPath&sDir
sDir=Dir
Loop
′获得当前目录下的子目录名称
1Index=0
sDir=Dir(sPath&″*.*″,16)
DoWhileLen(sDir)
IfLeft(sDir,1)″.″Then′skip.and..
′找出子目录名
IfGetAttr(sPath&sDir)AndvbDirectoryThen
1Index=lIndex+1
′保存子目录名
RedimPreservesSubDirs(1To1Index)
sSubDirs(1Index)=sPath&sDir&″%%″
EndIf
EndIf
sDir=dir
Loop
For1Index=1To1Index
′查找每一个子目录下文件,这里利用了递归
CallTreeSearch(sSubDirs(1Index),sFileSpec,sFiles())
Next1Index
TreeSearch=1Files
EndFunction
3.保存文件,按F5运行,单击命令按钮即可。
程序运行环境:VB4.0(32位),中文WIN95。->