使用C++ MFC进行递归文件搜索?

jac*_*see 3 c++ recursion mfc file-search

使用C++和MFC递归搜索文件的最简洁方法是什么?

编辑:这些解决方案是否能够通过一次通过使用多个过滤器?我想用CFileFind我可以过滤*.*然后编写自定义代码以进一步过滤到不同的文件类型.有什么东西提供内置的多个过滤器(即.*.exe,*.dll)?

编辑2:刚刚意识到一个明显的假设,我正在制作,这使我以前的编辑无效.如果我尝试使用CFileFind进行递归搜索,我必须使用*.*作为我的通配符,因为否则子目录将不匹配且不会发生递归.因此,无论如何都必须单独处理对不同文件扩展的过滤.

aJ.*_*aJ. 13

CFileFind.

从MSDN 看一下这个例子:

void Recurse(LPCTSTR pstr)
{
   CFileFind finder;

   // build a string with wildcards
   CString strWildcard(pstr);
   strWildcard += _T("\\*.*");

   // start working for files
   BOOL bWorking = finder.FindFile(strWildcard);

   while (bWorking)
   {
      bWorking = finder.FindNextFile();

      // skip . and .. files; otherwise, we'd
      // recur infinitely!

      if (finder.IsDots())
         continue;

      // if it's a directory, recursively search it

      if (finder.IsDirectory())
      {
         CString str = finder.GetFilePath();
         cout << (LPCTSTR) str << endl;
         Recurse(str);
      }
   }

   finder.Close();
}
Run Code Online (Sandbox Code Playgroud)