如何实现遍历文件夹中的所有文件 -钱玉炜
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 综合其它


如何实现遍历文件夹中的所有文件

发表时间:2008/5/19 8:16:55 评论(1) 浏览(8179)  评论 | 加入收藏 | 复制
   
摘 要:如何实现遍历文件夹中的所有文件 
正 文:
如何实现遍历文件夹中的所有文件 

  办法如下:
 
  把下面放到模块中


Option Explicit 

Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _
(ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _
(ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long

Public Const MAX_PATH = 260
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const FILE_ATTRIBUTE_COMPRESSED = &H800
Public Const FILE_ATTRIBUTE_DIRECTORY = &H10
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
Public Const FILE_ATTRIBUTE_TEMPORARY = &H100

'自定义数据类型FILETIME和WIN32_FIND_DATA的定义
Public Type FILETIME
 dwLowDateTime As Long
 dwHighDateTime As Long
End Type

Public Type WIN32_FIND_DATA
 dwFileAttributes As Long
 ftCreationTime As FILETIME
 ftLastAccessTime As FILETIME
 ftLastWriteTime As FILETIME
 nFileSizeHigh As Long
 nFileSizeLow As Long
 dwReserved0 As Long
 dwReserved1 As Long
 cFileName As String * MAX_PATH
 cAlternate As String * 14
End Type
----------------------
'--------------------------------------------------------------------------------
' 把当前文件夹路径下的所有文件入到listview中
'--------------------------------------------------------------------------------
Private Sub finfiles(tCurrentdir As String)
 Dim itmX As ListItem
 Dim tFindData As WIN32_FIND_DATA
 Dim strFileName As String
 Dim lHandle As Long
 Dim CountFolder As Integer
 Dim CountFiles As Integer
 CountFolder = 0
 CountFiles = 0
 ListView1.ListItems.Clear
 lHandle = FindFirstFile(tCurrentdir & "*.*", tFindData)
 If lHandle = 0 Then
  Set itmX = ListView1.ListItems.Add(, , strFileName & "找不到文件")
  Exit Sub
 End If
 strFileName = fDelInvaildChr(tFindData.cFileName)
 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
     Set itmX = ListView1.ListItems.Add(, , strFileName)
     itmX.SmallIcon = 1
     CountFolder = CountFolder + 1
    End If
   Else
    Debug.Print InStr(LCase(Right(strFileName, 3)), ExtendFileName)
    If InStr(ExtendFileName, LCase(Right(strFileName, 3))) > 0 Then
     Set itmX = ListView1.ListItems.Add(, , strFileName)
     itmX.SubItems(1) = CStr(FileLen(tCurrentdir & "" & strFileName))
     itmX.SmallIcon = 2
     itmX.SubItems(2) = FileDateTime(tCurrentdir & "" & strFileName)
     CountFiles = CountFiles + 1
    End If
   End If
  End If
 Loop
 ListView1.Sorted = True
 ListView1.SortKey = 1
 StatusBar1.Panels(2).Text = CurrentDir
 StatusBar1.Panels(3).Text = "文件夹:" & CountFolder & " 文件:" & CountFiles
End Sub 


Access软件网交流QQ群(群号:198465573)
 
 相关文章
VBA遍历文件夹和子文件夹中所有文件  【欢乐小爪  2012/3/22】
VBA遍历文件夹常用有三种方法  【风行  2012/5/26】
FSO遍历文件夹,按时间排序,删除早期文件  【风行  2012/5/28】
遍历窗体全字段模糊查询  【一杯绿茶  2013/7/1】
采用函数形式实现遍历子窗体文本框模糊查询文本内容  【cspa  2013/7/16】
常见问答
技术分类
相关资源
文章搜索
关于作者

钱玉炜

文章分类

文章存档

友情链接