FindFirstFile问题
简单说:
环境 win7 vs2010
代码如下
#include<iostream>#include <stdio.h> #include <windows.h> using namespace std;void FindInAll(LPCTSTR lpszPath) { TCHAR szFind[MAX_PATH]; lstrcpy(szFind, lpszPath); lstrcat(szFind, (LPCTSTR)"\\*.*"); // 找所有文件 cout<<(char*)szFind<<endl;//***************** WIN32_FIND_DATA wfd; HANDLE hFind = FindFirstFile(szFind, &wfd); if (hFind == INVALID_HANDLE_VALUE){ // 如果没有找到或查找失败 cout<<"search file failed"<<endl; cout<< GetLastError()<<endl; return; } do { if (wfd.cFileName[0] == '.') continue; if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { TCHAR szFile[MAX_PATH]; wsprintf(szFile, (LPCTSTR)"%s\\%s", lpszPath, wfd.cFileName); FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归 } else { TCHAR szFile[MAX_PATH]; wsprintf(szFile, (LPCTSTR)"%s\\%s", lpszPath, wfd.cFileName); printf("%s\n",szFile); // 对文件进行操作 } } while (FindNextFile(hFind, &wfd)); FindClose(hFind); // 关闭查找句柄 }int main(int argc, char* argv[]) { FindInAll((LPTSTR)"E:\\Java_Workspace\\LookUpDic\\src\\look"); cout<<"FindInAll over"<<endl; //************************** return 0; }
#include<iostream>#include <stdio.h> #include <Windows.h> #include <tchar.h>using namespace std;void FindInAll(LPCTSTR lpszPath) { TCHAR szFind[MAX_PATH]; lstrcpy(szFind, lpszPath); lstrcat(szFind, (LPCTSTR)_T("\\*.*")); // 找所有文件 cout<<(char*)szFind<<endl;//***************** WIN32_FIND_DATA wfd; HANDLE hFind = FindFirstFile(szFind, &wfd); if (hFind == INVALID_HANDLE_VALUE){ // 如果没有找到或查找失败 cout<<"search file failed"<<endl; cout<< GetLastError()<<endl; return; } do { if (wfd.cFileName[0] == '.') continue; if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { TCHAR szFile[MAX_PATH]; wsprintf(szFile, (LPCTSTR)_T("%s\\%s"), lpszPath, wfd.cFileName); FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归 } else { WCHAR szFile[MAX_PATH]; wsprintf(szFile, (LPCTSTR)_T("%s\\%s"), lpszPath, wfd.cFileName); wprintf(_T("%s"), szFile); // 对文件进行操作 } } while (FindNextFile(hFind, &wfd)); FindClose(hFind); // 关闭查找句柄 }int main(int argc, char* argv[]) { FindInAll((LPTSTR)_TEXT("E:\\look")); cout<<"FindInAll over"<<endl; //************************** return 0; }