读书人

FindFirstFile有关问题

发布时间: 2012-03-15 11:50:38 作者: rapoo

FindFirstFile问题
简单说:
环境 win7 vs2010
代码如下

C/C++ code
#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; } 



该文件夹下有5个文本文件
但运行的输出:

E:\Java_Workspace\LookUpDic\src\look\*.*
search file failed
2
FindInAll over

why?

[解决办法]
C/C++ code
#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; } 

读书人网 >C++

热点推荐