我需要在dir中创建所有文件,然后导航到子目录并执行相同的操作。
理想情况下,算法应该在linux macos上以相同的方式工作[windows(废弃)不再]。
更新:我现在知道VFS,但我很困惑使用VFS来枚举dir。有什么建议吗?我应该打开dir作为文件吗?
答案 0 :(得分:4)
POSIX.1-2001指定opendir
,readdir
和closedir
,seekdir
,rewinddir
和telldir
。您的平台可能有手册页描述如何使用它们。
据报道,MS库并不直接支持这些,而是显然更喜欢在那里使用FindFirst
和FindNext
,但据推测,有几个仿真库可以提供上述功能。你必须自己对那部分进行排序,因为我对Win32不是很熟悉。
答案 1 :(得分:3)
如果您正在使用GCC,则可以尝试文件系统界面。 点击此处:GNU file system interface referemce
答案 2 :(得分:3)
您可以使用Boost Filesystem,它可以移植到Linux,Windows和MacOS。顾名思义,recursive_directory_iterator将允许您递归遍历目录。
#include "boost/filesystem.hpp"
#include <iostream>
int main()
{
namespace fs = boost::filesystem;
fs::recursive_directory_iterator end;
for ( fs::recursive_directory_iterator dir("./"); dir != end; ++dir )
{
std::cout << *dir << std::endl;
}
}
答案 3 :(得分:1)
你应该在Linux上使用getdents()或readdir()