Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 综合其它

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

时 间:2008-05-19 08:16:55
作 者:UMVSOFT整理   ID:16  城市:江阴
摘 要:如何实现遍历文件夹中的所有文件 

正 文:

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

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


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交流群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助