windows下使用C/C++怎么遍历目录并读取目录下的文件列表?
在linux平台可以有dirent库来帮助实现,在windows下呢?
---更新于2015-05-19 00:13---
目前得到了多种解决方案,挨个尝试后会把自己的解决方案也贴出来。感谢各位大神的热情帮助!不胜感激
---更新于2015-05-19 13:00--
贴上了自己的方法,各位大神的回答都很感激,不过工作较忙还没来得及一一验证,请看到的小伙伴用到了自己验证一下吧!就采纳回答的最详细的@pezy大神的回答吧!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
Windows 下最本质的做法,是直接调用 Windows API,解决你的这个问题,需要三个 API 函数:
应该基本上可以顾名思义了吧。
核心用法如下:
更加完整的实例代码可以参考这里:Listing the Files in a Directory
优势在于不需要任何第三方库,可以获得其他更多文件的信息,譬如想知道文件的修改时间之类的,也可以在这上面扩展。
唯一的劣势,应该就是无法直接跨平台,但可以通过一式两份的方式跨,要更加高效。
如果想直接跨平台,即 Linux 与 Windows 下使用同一份代码,还可以考虑使用 Qt 框架。
QDir
可以以最清晰简单的代码解决上述问题:可以用io.h这个库
boost的filesystem库满足你!
有一种取巧的方法,就是用system指令:
然后读取文件解析。
win下的实现方法很多,MFC下可以用你写的那个CFileFind,mingw32可以直接用linux下的一套,还有win32的API可以用,我一般都在linux下或者mingw32下编程,所以opendir那一套用得比较多。。
这里贴上我的一种方法,使用的是MFC提供的CFileFind类,依赖afx.h库文件,跟msdn的示例代码差不多,只不过我这里用一个vector保存了一下取到的文件列表。代码写的比较乱,权且提供一种方法。
万物都是API,万物都是对象