FindFirstFile

FindFirstFile

ction "Fin lpFin

VB聲明


Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long

說明


根據文件名查找文件

返回值


Long,如執行成功,返回一個搜索句柄。如果出錯,返回一個INVALID_HANDLE_VALUE常數,一旦不再需要,應該用FindClose函數關閉這個句柄

參數表


參數 類型及說明
lpFileName String,欲搜索的文件名。參數可如下
c:\Windows\*.* //在c:\Windows目錄中查找所有文件 c:\Windows\System32\*.dll //在c:\Windows\System32目錄中查找所有dll文件
c:\Windows\System.ini ;在c:\Windows目錄中查找System.ini文件
c:\Windows\a???.* // 在c:\Windows目錄中查找所有以a開頭的文件名長度。為4個字元的文件
Test.dat //在當前目錄查找Test.dat文件
*.* //在當前目錄查找所有文件
(注!一定要帶文件名。如果參數為“c:\Windows”,則返回的文件名為“Windows”,並且接下來調用FindNextFile會返回失敗)
lpFindFileData WIN32_FIND_DATA,這個結構用於裝載與找到的文件有關的信息。該結構可用於後續的搜索
結構說明:
WIN32_FIND_DATA STRUCT
dwFileAttributes DWORD ? ;文件屬性
ftCreationTime FILETIME <> ;文件的創建日期
ftLastAccessTime FILETIME <> ;文件的最後存取日期
ftLastWriteTime FILETIME <> ;文件的最後修改日期
nFileSizeHigh DWORD ? ;文件長度的高32位
nFileSizeLow WORD ? ;文件長度的低32位
dwReserved0 DWORD ? ;內部使用
dwReserved1 DWORD ? ;內部使用
cFileName BYTE MAX_PATH dup(?) ;本次找到的文件名
cAlternate BYTE 14 dup(?) ;文件的8.3結構的短文件名
WIN32_FIND_DATA ENDS
dwFileAttributes欄位可以是下面取值的組合,通過這個欄位可以檢查找到的究竟是一個文件還是一個子目錄,以及其他的文件屬性:
● FILE_ATTRIBUTE_ARCHIVE——文件包含歸檔屬性。
● FILE_ATTRIBUTE_COMPRESSED——文件和目錄被壓縮。
● FILE_ATTRIBUTE_DIRECTORY——找到的是一個目錄。
● FILE_ATTRIBUTE_HIDDEN——文件包含隱含屬性。
● FILE_ATTRIBUTE_NORMAL——文件沒有其他屬性。
● FILE_ATTRIBUTE_READONLY——文件包含只讀屬性。
● FILE_ATTRIBUTE_SYSTEM——文件包含系統屬性。
● FILE_ATTRIBUTE_TEMPORARY——文件是一個臨時文件。
(返回的文件名中會包含"."和".."。“.'代表本目錄,".."代表上一層目錄。一般情況下需要把這兩個名稱過濾掉。比如要進行文件刪除操作)

註解


由這個函數返回的句柄可以作為一個參數用於FindNextFile函數。這樣一來,就可以方便的枚舉出與lpFileName參數指定的文件名相符的所有文件

VC聲明


HANDLE FindFirstFile(
LPCTSTR lpFileName, // file name
LPWIN32_FIND_DATA lpFindFileData // data buffer
);

功能說明


該函數到一個文件夾(包括子文件夾)去搜索指定文件 如果要使用附加屬性去搜索文件的話 可以使用FindFirstFileEx函數

參數說明


HANDLE hFindFile搜索的文件句柄 函數執行的時候搜索的是此句柄的下一文件
LPWIN32_FIND_DATA lpFindFileData 指向一個用於保存文件信息的結構體

返回值


如果調用成功返回一個句柄,可用來做為FindNextFile或 FindClose參數
調用失敗 返回為INVALID_HANDLE_VALUE(即-1) ,可調用GetLastError來獲取錯誤信息