FindFirstFile FindNextFile FindFiles 檔案查詢非常簡單的程式碼
FindFirstFile,FindNextFile,FindFiles,檔案查詢非常簡單的程式碼,非常適合初學者學習,NanShan
在這裡給大家發出來了,程式碼親測過可以正常執行:
- //查詢檔案
- HANDLE WINAPI FindFirstFile(
- __in LPCTSTR lpFileName,//檔名或路徑
- __out LPWIN32_FIND_DATA lpFindFileData
- );
- //查詢下一個檔案
- BOOL WINAPI FindNextFile(
- __in HANDLE hFindFile,
- __out LPWIN32_FIND_DATA lpFindFileData
- );
- typedef struct _WIN32_FIND_DATA {
- DWORD dwFileAttributes; //檔案屬性
- FILETIME ftCreationTime; //建立時間
- FILETIME ftLastAccessTime; //最近訪問時間
- FILETIME ftLastWriteTime; //最近修改時間
- DWORD nFileSizeHigh; //高位大小
- DWORD nFileSizeLow; //低位大小
- DWORD dwReserved0; //保留
- DWORD dwReserved1; //保留
- TCHAR cFileName[MAX_PATH];//檔名,非全路徑
- TCHAR cAlternateFileName[14];
- }WIN32_FIND_DATA,*PWIN32_FIND_DATA,*LPWIN32_FIND_DATA;
- void FindFiles(CString &strPath)
- {
- WIN32_FIND_DATA findData;
- CString strTemp = strPath;
- strTemp.Format(_T("%s\\*.*"), strPath);//查詢指定目錄下的直接的所有檔案和目錄
- HANDLE hFile = FindFirstFile(strTemp, &findData);
- while (hFile != INVALID_HANDLE_VALUE)
- {
- if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//如果是目錄
- {
- if(findData.cFileName[0] != _T('.'))//排除.和..資料夾
- {
- strTemp = strPath+ CString("\\") + findData.cFileName;//獲得完整路徑
- FindFiles(strTemp);//遞迴查詢當前目錄的檔案
- }
- }
- else
- {
- strTemp = strPath+ CString("\\") + findData.cFileName;
- }
- if(!FindNextFile(hFile, &findData))
- {
- break;
- }
- }
- }
FindFirstFile,FindNextFile,FindFiles,檔案查詢非常簡單的程式碼,非常適合初學者學習,NanShan 在這裡給大家發出來了,程式碼親測過可以正常執行:
01.//查詢檔案
02.HANDLE WINAPI FindFirstFile(
03. __in LPCTSTR lpFileName,//檔名或路徑
04. __out LPWIN32_FIND_DATA lpFindFileData
05.);
06.
07.//查詢下一個檔案
08.BOOL WINAPI FindNextFile(
09. __in HANDLE hFindFile,
10. __out LPWIN32_FIND_DATA lpFindFileData
11.);
12.
13.typedef struct _WIN32_FIND_DATA {
14. DWORD dwFileAttributes; //檔案屬性
15. FILETIME ftCreationTime; //建立時間
16. FILETIME ftLastAccessTime; //最近訪問時間
17. FILETIME ftLastWriteTime; //最近修改時間
18. DWORD nFileSizeHigh; //高位大小
19. DWORD nFileSizeLow; //低位大小
20. DWORD dwReserved0; //保留
21. DWORD dwReserved1; //保留
22. TCHAR cFileName[MAX_PATH];//檔名,非全路徑
23. TCHAR cAlternateFileName[14];
24.}WIN32_FIND_DATA,*PWIN32_FIND_DATA,*LPWIN32_FIND_DATA;
複製程式碼
01.void FindFiles(CString &strPath)
02.
03.{
04. WIN32_FIND_DATA findData;
05.
06. CString strTemp = strPath;
07. strTemp.Format(_T("%s\\*.*"), strPath);//查詢指定目錄下的直接的所有檔案和目錄
08.
09. HANDLE hFile = FindFirstFile(strTemp, &findData);
10. while (hFile != INVALID_HANDLE_VALUE)
11. {
12. if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//如果是目錄
13. {
14. if(findData.cFileName[0] != _T('.'))//排除.和..資料夾
15. {
16.
17. strTemp = strPath+ CString("\\") + findData.cFileName;//獲得完整路徑
18. FindFiles(strTemp);//遞迴查詢當前目錄的檔案
19. }
20. }
21. else
22. {
23. strTemp = strPath+ CString("\\") + findData.cFileName;
24. }
25.
26. if(!FindNextFile(hFile, &findData))
27. {
28. break;
29. }
30. }
31.
32.}
複製程式碼