龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

用VB实现文件查找功能

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
在VB中要实现查找文件功能,我们可以利用VB的DIR函数进行递归来实现。每次使用DIR函数后,比较是否有要查找的文件,再检查是否有子目录,若有,利用递归继续查找,这样可对整个盘
在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。->

精彩图集

赞助商链接