查找文件夹中指定的文件

vector<CString> vecStr;

VOID GetFolderIncldFile(CString strFolder, CString strFile)
{
 TCHAR szFind[MAX_PATH]; // 要找的文件类型
 TCHAR szFindAll[MAX_PATH]; // 找所有文件
 TCHAR szFliePath[MAX_PATH]; // 找到的文件
 WIN32_FIND_DATA FindFileData;
 strcpy(szFind,strFolder.GetBuffer(0));
 strcat(szFind,"\\");
 strcat(szFind,strFile);

 strcpy(szFindAll,strFolder.GetBuffer(0));
 strcat(szFindAll, "\\*.*");

 strcpy(szFliePath,strFolder.GetBuffer(0));
 strcat(szFliePath, "\\");

 // 1、找文件 2、找目录 3、对目录重复步骤1、2
 // 找指定的文件
 HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
 if(INVALID_HANDLE_VALUE != hFind)
 {
  while (TRUE)
  {
   if(!(FindFileData.dwFileAttributes &FILE_ATTRIBUTE_DIRECTORY)) // 非目录才进去
   {
    TCHAR szTmp[MAX_PATH];
    strcpy(szTmp, szFliePath);
    strcat(szTmp, FindFileData.cFileName);
    vecStr.push_back(szTmp);
   }
   if(!FindNextFile(hFind,&FindFileData)) break;
  }

  FindClose(hFind);
 }

 // 找所有文件,查找其中的目录
 hFind = ::FindFirstFile(szFindAll,&FindFileData);
 if(INVALID_HANDLE_VALUE != hFind)
 {
  while(TRUE)
  {
   if(FindFileData.dwFileAttributes &FILE_ATTRIBUTE_DIRECTORY) // 是目录才进去
   {
    if('.' != FindFileData.cFileName[0])
    {
     strcpy(szFind,strFolder.GetBuffer(0));
     strcat(szFind,"\\");
     strcat(szFind,FindFileData.cFileName);
     GetFolderIncldFile(szFind, strFile);
    }
   }
   if(!FindNextFile(hFind,&FindFileData)) break;
  }
  FindClose(hFind);
 }
}

posted @ 2014-04-13 16:09  和心  阅读(387)  评论(0)    收藏  举报