如何用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中是不支持尾递归的。