我需要枚举目录中的所有文件,然后导航到子目录并执行相同操作。
理想情况下,该算法应该在 linux macos [不再使用 windows(obsolete)] 上以相同的方式工作。
更新:我现在知道 VFS,但我对使用 VFS 枚举目录感到困惑。有什么建议吗?我应该打开一个目录作为文件吗?
POSIX.1-2001 指定opendir
, readdir
, 和closedir
, seekdir
, rewinddir
, 和telldir
. 您的平台可能有描述如何使用它们的手册页。
据报道,MS 库不直接支持这些,而是显然更喜欢在那边使用,但据说有几个仿真库提供上述FindFirst
功能;FindNext
你必须自己对那部分进行排序,因为我对 Win32 不是很熟悉。
如果你使用 GCC,你可以试试文件系统接口。在这里查看:GNU 文件系统接口参考
您可以使用可移植到 Linux、Windows 和 MacOS 的Boost Filesystem 。顾名思义,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;
}
}
你应该在 Linux 上使用 getdents() 或 readdir()