jac*_*see 3 c++ recursion mfc file-search
使用C++和MFC递归搜索文件的最简洁方法是什么?
编辑:这些解决方案是否能够通过一次通过使用多个过滤器?我想用CFileFind我可以过滤*.*然后编写自定义代码以进一步过滤到不同的文件类型.有什么东西提供内置的多个过滤器(即.*.exe,*.dll)?
编辑2:刚刚意识到一个明显的假设,我正在制作,这使我以前的编辑无效.如果我尝试使用CFileFind进行递归搜索,我必须使用*.*作为我的通配符,因为否则子目录将不匹配且不会发生递归.因此,无论如何都必须单独处理对不同文件扩展的过滤.
aJ.*_*aJ. 13
从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)