使用 C++ 递归文件搜索 MFC?
使用 C++ 和 MFC 递归搜索文件的最简洁方法是什么?
编辑:这些解决方案是否提供一次使用多个过滤器的能力? 我想使用 CFileFind 我可以过滤 *.*,然后编写自定义代码以进一步过滤不同的文件类型。 有没有提供内置多个过滤器(即*.exe、*.dll)?
编辑2:刚刚意识到我所做的一个明显的假设使我之前的编辑无效。 如果我尝试使用 CFileFind 进行递归搜索,则必须使用 *.* 作为通配符,否则子目录将不会匹配,并且不会发生递归。 因此,无论如何,对不同文件扩展名的过滤都必须单独处理。
What is the cleanest way to recursively search for files using C++ and MFC?
EDIT: Do any of these solutions offer the ability to use multiple filters through one pass? I guess with CFileFind I could filter on *.* and then write custom code to further filter into different file types. Does anything offer built-in multiple filters (ie. *.exe,*.dll)?
EDIT2: Just realized an obvious assumption that I was making that makes my previous EDIT invalid. If I am trying to do a recursive search with CFileFind, I have to use *.* as my wildcard because otherwise subdirectories won't be matched and no recursion will take place. So filtering on different file-extentions will have to be handled separately regardless.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用
CFileFind
。看一下 MSDN 中的示例:
Using
CFileFind
.Take a look at this example from MSDN:
使用 Boost 的文件系统 实现!
递归示例甚至位于文件系统主页上:
Use Boost's Filesystem implementation!
The recursive example is even on the filesystem homepage:
我知道这不是你的问题,但使用
CStringArray
也很容易无需递归I know it is not your question, but it is also easy to to without recursion by using a
CStringArray
查看 recls 库 - 代表 recursive ls - 这是一个适用于 UNIX 和 Windows 的递归搜索库。 它是一个适应不同语言(包括 C++)的 C 库。 根据记忆,您可以像下面这样使用它:
它将在 C:\mydir 或其任何子目录中查找所有 .doc 文件以及所有以 abc 开头的 .xls 文件。
我还没有编译这个,但它应该非常接近目标。
Check out the recls library - stands for recursive ls - which is a recursive search library that works on UNIX and Windows. It's a C library with adaptations to different language, including C++. From memory, you can use it something like the following:
It'll find all .doc files, and all .xls files beginning with abc in C:\mydir or any of its subdirectories.
I haven't compiled this, but it should be pretty close to the mark.
它不起作用。 即使文件存在于同一目录中,Find.FindNextFile()也会返回 false``
Its not working. Find.FindNextFile() returning false even the files are present in the same directory``