'遍歷主函數(shù)
'參數(shù)說明:
' strPathName 要遍歷的目錄
' objList 使用VB的內(nèi)部控件ListBox來存放遍歷得到的路徑,之所以
' 不使用字符串?dāng)?shù)組是因?yàn)閿?shù)組大小不好定義
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Sub sDirTraversal(ByVal strPathName As String, ByRef objList As ListBox)
Dim sSubDir(200) As String '存放當(dāng)前目錄下的子目錄,下標(biāo)可根據(jù)需要調(diào)整
Dim iIndex As Integer '子目錄數(shù)組下標(biāo)
Dim i As Integer '用于循環(huán)子目錄的查找
Dim lHandle As Long 'FindFirstFileA 的句柄
Dim tFindData As WIN32_FIND_DATA '
Dim strFileName As String '文件名
On Error Resume Next
'初始化變量
i = 1
iIndex = 0
tFindData.cFileName = "" '初始化定長字符串
lHandle = FindFirstFile(strPathName & "/*.*", tFindData)
If lHandle = 0 Then '查詢結(jié)束或發(fā)生錯(cuò)誤
Exit Sub
End If
strFileName = fDelInvaildChr(tFindData.cFileName)
If tFindData.dwFileAttributes = &H10 Then '目錄
If strFileName <> "." And strFileName <> ".." Then
iIndex = iIndex + 1
sSubDir(iIndex) = strPathName & "/" & strFileName '添加到目錄數(shù)組
End If
Else
objList.AddItem strPathName & "/" & strFileName
End If
'循環(huán)查找下一個(gè)文件,直到結(jié)束
Do While True
tFindData.cFileName = ""
If FindNextFile(lHandle, tFindData) = 0 Then '查詢結(jié)束或發(fā)生錯(cuò)誤
FindClose (lHandle)
Exit Do
Else
strFileName = fDelInvaildChr(tFindData.cFileName)
If tFindData.dwFileAttributes = &H10 Then
If strFileName <> "." And strFileName <> ".." Then
iIndex = iIndex + 1
sSubDir(iIndex) = strPathName & "/" & strFileName '添加到目錄數(shù)組
End If
Else
objList.AddItem strPathName & "/" & strFileName
End If
End If
Loop
'如果該目錄下有目錄,則根據(jù)目錄數(shù)組遞歸遍歷
If iIndex > 0 Then
For i = 1 To iIndex
sDirTraversal sSubDir(i), objList
Next
End If
End Sub
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。