1 //查找文件 2 HANDLE WINAPI FindFirstFile( 3 __in LPCTSTR lpFileName,//文件名或路径 4 __out LPWIN32_FIND_DATA lpFindFileData 5 ); 6 7 //查找下一个文件 8 BOOL WINAPI FindNextFile( 9 __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;
实例代码:
1 void FindFiles(CString &strPath) 2 3 { 4 WIN32_FIND_DATA findData; 5 6 CString strTemp = strPath; 7 strTemp.Format(_T("%s\\*.*"), strPath);//查找指定目录下的直接的所有文件和目录 8 9 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 }