用CFileFind查找指定目录下的某个文件(文件名字按字串匹配),搜索完该目录下所有文件夹,如果搜到的是文件夹(新目录)另新开一个线程搜索,怎么我写的老是有点问题,真郁闷
我的大概代码是这样的:
....
int re;
if(filefinder.FindFile(strCurrentPath))
{
  do 
  {
    re=filefinder.FindNextFile();
    if(filefinder.IsDots())
     continue;
     if(filefinder.IsDirectory())
     {//是个目录,开辟新的线程来搜索  传给线程函数的参数是新目录名(文件夹名)和要找的文件名 //这里就不写了
           .........
 
     }
    else{//是文件
     if(filefinder.GetFileName().Find(strFileName)!=-1)
      {  //只要有子串相同即可
            
      }
   }

}while(re);filefinder.Close();
.....   
郁闷了好久,特来请大虾帮写个,测试通过马上给分!

解决方案 »

  1.   

    这个没有用过,我用过
    FindFirstFile()
    FindNextFile()
    可以查找指定的文件,或是文件夹。
    ...
    HANDLE pHandl = FindFirstFile( name, &findDatat )
    BOOL   bStatus = true;
    while( bStatus )
    {
        ....
        bStatus = FindNextFile( pHandl, &findData );
    }
    FindClose( pHandl );
    ...这样就可以实现查找指定的文件,可以使用通配符: * 和 ?
      

  2.   

    我又改用API形式的了,方法是找到一个匹配文件就以该匹配路径为参数用
    SendMessage(m_hWnd,WM_FINDITEM,(WPARAM)&PathStr,0);发送一个自定义消息到一个窗口,将路径显示出来,这么一来每个一样的文件都找到重复了几次,晕厥......