VB 中遍历目录,遍历目录查找文件的2个实现方法[2]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:


'遍历主函数
'参数说明:
' strPathName 要遍历的目录
' objList 使用VB的内部控件ListBox来存放遍历得到的路径,之所以
' 不使用字符串数组是因为数组大小不好定义
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Sub sDirTraversal(ByVal strPathName As String, ByRef objList As ListBox)
    Dim sSubDir(200) As String '存放当前目录下的子目录,下标可根据需要调整
    Dim iIndex As Integer '子目录数组下标
    Dim i As Integer '用于循环子目录的查找
   
    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 '查询结束或发生错误
    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 '添加到目录数组
    End If
    Else
    objList.AddItem strPathName & "\" & strFileName
    End If
    '循环查找下一个文件,直到结束
    Do While True
    tFindData.cFileName = ""
    If FindNextFile(lHandle, tFindData) = 0 Then '查询结束或发生错误
    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 '添加到目录数组
    End If
    Else
    objList.AddItem strPathName & "\" & strFileName
    End If
    End If
    Loop
    '如果该目录下有目录,则根据目录数组递归遍历
    If iIndex > 0 Then
    For i = 1 To iIndex
    sDirTraversal sSubDir(i), objList
    Next
    End If
End Sub

 


方法2:不使用API,直接用VB的函数Dir  来实现


本文关键:VB 中遍历目录,遍历目录查找文件的2个实现方法
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top