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.}
复制代码



你可能感兴趣的:(C++,FindFirstFile,FindNextFile,winapi,递归,win32)