我用FindFirstFile找目录都很正常,找到目录后,找目录里的文件找不到
求各位大侠帮忙看下啊其中filename包含扩展名,即形式为 ***.***   不知道这样对不对啊int search_file()
{
HANDLE  hFindFile;
WIN32_FIND_DATA  FileData;

hFindFile = FindFirstFile(filename.c_str(),&FileData);
if( hFindFile == INVALID_HANDLE_VALUE )
{
return(1);
}
else
{
          do{if(!(FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ))
{

return(0);
}
   }while(FindNextFile(hFindFile,&FileData)); }
FindClose(hFindFile);
return(1);}

解决方案 »

  1.   

    楼主如果是要遍历目录,文件名应该类似这样子:
    x:\folder\subf\*用*就可以,不要用***.***
    如果是制定文件名也可以
      

  2.   

    我的目录查找能够实现,就是文件找不到
    那如果不加扩展名的话,找到的文件还要进一步看扩展名是否正确,扩展名在WIN32_FIND_DATA 的什么地方呢?
      

  3.   

    hFind = FindFirstFile(DirSpec, &FindFileData); if (hFind == INVALID_HANDLE_VALUE) 
    {
    printf ("Invalid file handle. Error is %u\n", GetLastError());
    return (-1);

    else 
    {
    do
    {
    if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
    char szSubDir[MAX_PATH];
    strcpy(szSubDir, pFindPath);
    strncat(szSubDir, "\\", 2);
    strncat(szSubDir, FindFileData.cFileName, strlen(FindFileData.cFileName)); if(strcmp(FindFileData.cFileName, ".") != 0 &&
    strcmp(FindFileData.cFileName, "..") != 0)
    {
    BrowseDir(szSubDir);
    }
    else
    {
    printf("Sub directory name is %s\n", FindFileData.cFileName);
    }
    }
    else
    {
    printf("Next file name is %s\n", FindFileData.cFileName);
    }
    }while(FindNextFile(hFind, &FindFileData) != 0);

    dwError = GetLastError();
    FindClose(hFind);
    if (dwError != ERROR_NO_MORE_FILES) 
    {
    printf ("FindNextFile error. Error is %u\n", dwError);
    return (-1);
    }
    }
      

  4.   

    你的这行只能找目录(FILE_ATTRIBUTE_DIRECTORY )do{if(!(FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ))
    {

    return(0);
    }