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