天天看點

FindFirstFile FindNextFile FindFiles 檔案查找非常簡單的代碼

位址: FindFirstFile FindNextFile FindFiles 檔案查找非常簡單

FindFirstFile,FindNextFile,FindFiles,檔案查找非常簡單的代碼,非常适合初學者學習,NanShan 在這裡給大家發出來了,代碼親測過可以正常運作:

  1. //查找檔案
  2. HANDLE WINAPI FindFirstFile(
  3.   __in          LPCTSTR lpFileName,//檔案名或路徑
  4.   __out         LPWIN32_FIND_DATA lpFindFileData
  5. );
  6. //查找下一個檔案
  7. BOOL WINAPI FindNextFile(
  8.   __in          HANDLE hFindFile,
  9.   __out         LPWIN32_FIND_DATA lpFindFileData
  10. );
  11. typedef struct _WIN32_FIND_DATA {  
  12.       DWORD dwFileAttributes;  //檔案屬性
  13.       FILETIME ftCreationTime;  //建立時間
  14.       FILETIME ftLastAccessTime;  //最近通路時間
  15.       FILETIME ftLastWriteTime; //最近修改時間
  16.       DWORD nFileSizeHigh; //高位大小
  17.       DWORD nFileSizeLow;  //低位大小
  18.       DWORD dwReserved0;  //保留
  19.       DWORD dwReserved1;  //保留
  20.       TCHAR cFileName[MAX_PATH];//檔案名,非全路徑
  21.        TCHAR cAlternateFileName[14];
  22. }WIN32_FIND_DATA,*PWIN32_FIND_DATA,*LPWIN32_FIND_DATA;

複制代碼

  1. void FindFiles(CString &strPath)
  2. {
  3.     WIN32_FIND_DATA findData;
  4.     CString strTemp = strPath;
  5.     strTemp.Format(_T("%s\\*.*"), strPath);//查找指定目錄下的直接的所有檔案和目錄
  6.     HANDLE hFile = FindFirstFile(strTemp, &findData);
  7.     while (hFile != INVALID_HANDLE_VALUE)
  8.     {
  9.         if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//如果是目錄
  10.         {
  11.             if(findData.cFileName[0] != _T('.'))//排除.和..檔案夾
  12.             {
  13.                 strTemp =  strPath+ CString("\\") + findData.cFileName;//獲得完整路徑
  14.                 FindFiles(strTemp);//遞歸查找目前目錄的檔案
  15.             }
  16.         }
  17.         else
  18.         {
  19.             strTemp =  strPath+ CString("\\") + findData.cFileName;
  20.         }
  21.         if(!FindNextFile(hFile, &findData))
  22.         {
  23.             break;
  24.         }
  25.     }
  26. }

複制代碼

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.}

複制代碼



繼續閱讀