複製鏈接
請複製以下鏈接發送給好友

FindFirstFile

鎖定
根據文件名查找文件。該函數到一個文件夾(包括子文件夾)去搜索指定文件 如果要使用附加屬性去搜索文件的話 可以使用FindFirstFileEx函數。
外文名
FindFirstFile
依    據
根據文件名查找文件
參數表
lpFileNameString
性    質
函數

FindFirstFile參數簡介

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

FindFirstFile返回值

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

FindFirstFile參數表

參數 類型及説明
lpFileNameString,欲搜索的文件名。參數可如下
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會返回失敗)
lpFindFileDataWIN32_FIND_DATA,這個結構用於裝載與找到的文件有關的信息。該結構可用於後續的搜索

FindFirstFile結構説明

WIN32_FIND_DATASTRUCT
dwFileAttributesDWORD?;//文件屬性
ftCreationTimeFILETIME<>;//文件的創建日期
ftLastAccessTimeFILETIME<>;//文件的最後存取日期
ftLastWriteTimeFILETIME<>;//文件的最後修改日期
nFileSizeHighDWORD?;//文件長度的高32位
nFileSizeLowWORD?;//文件長度的低32位
dwReserved0DWORD?;//內部使用
dwReserved1DWORD?;//內部使用
cFileNameBYTEMAX_PATHdup(?);//本次找到的文件名
cAlternateBYTE14dup(?);//文件的8.3結構的短文件名
WIN32_FIND_DATAENDS
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——文件是一個臨時文件。
(返回的文件名中會包含"."和".."。“.'代表本目錄,".."代表上一層目錄。一般情況下需要把這兩個名稱過濾掉。比如要進行文件刪除操作)

FindFirstFile註解

由這個函數返回的句柄可以作為一個參數用於FindNextFile函數。這樣一來,就可以方便的枚舉出與lpFileName參數指定的文件名相符的所有文件
VC聲明
HANDLE FindFirstFile(
    LPCTSTR lpFileName,//filename
    LPWIN32_FIND_DATA lpFindFileData//databuffer
);
程序例
#include<stdio.h>
#include<windows.h>

int main()
{
    WIN32_FIND_DATA p;
    HANDLE h=FindFirstFile("e:\\test\\*.c",&p);
    puts(p.cFileName);
    while(FindNextFile(h,&p))
    puts(p.cFileName);
    return0;
}

FindFirstFile參數説明

LPCTSTR lpFileName文件名(包括路徑)
LPWIN32_FIND_DATA lpFindFileData 指向一個用於保存文件信息的結構體

FindFirstFile返回值

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