VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 如何用Dir()函数来列出C:\下所有*.TMP文件,并且用文本框输出
发表评论(0)作者:, 平台:, 阅读:11269, 日期:2000-03-12
问题: 如何用Dir()函数列出C:\下所有*.TMP文件,并且用文本框输出?

  答:下面是一个列出指定目录下所有符合要求的文件名的函数:

  Public Function AutoListFiles(ByVal sDirName As String,ByVal FileFilter As String ) As Boolean

  On Error GoTo RF_ERROR

  Dim sName As String, sFile As String, sExt As String

  Dim sDirList() As String, iDirNum As Integer, i As Integer

  ′首先枚举所有文件

  sFile = Dir(sDirName + FileFilter, vbNormal + vbArchive + vbHidden)

  Do While Len(sFile) >0

  sFile = UCase(Trim(sFile))

  ′在此处可以将 sFile 加入到一个 Text 控件...

  sFile = Dir ′下一个文件

  Loop

  iDirNum = 0

  sName = Dir(sDirName + ″*.*″, vbDirectory + vbNormal)

  Do While Len(sName) >0

  If sName <> ″.″ And sName <> ″..″ Then

  iDirNum = iDirNum + 1

  ReDim Preserve sDirList(1 To iDirNum)

  sDirList(iDirNum) = sDirName + sName + ″\″

  End If

  sName = Dir ′下一个目录

  Loop

  For i = 1 To iDirNum

  AutoListFiles sDirList(i) ′递归调用

  Next

  End If

  RF_EXIT:

  AutoListFiles = True

  Exit Function

  RF_ERROR:

  MsgBox Err.Description, vbCritical, ″″

  Resume RF_EXIT

  End Function

  调用上述函数的示例:

  AutoListFiles(″C:\″,″*.TMP″)

  之所以采用上述先处理文件,再处理子目录,一是思路较清晰,另外也有模仿 Prolog 语言中的“尾递归”的想法,当然,VB中是不支持尾递归的。