3

我需要枚举目录中的所有文件,然后导航到子目录并执行相同操作。

理想情况下,该算法应该在 linux macos [不再使用 windows(obsolete)] 上以相同的方式工作。

更新:我现在知道 VFS,但我对使用 VFS 枚举目录感到困惑。有什么建议吗?我应该打开一个目录作为文件吗?

4

4 回答 4

4

POSIX.1-2001 指定opendir, readdir, 和closedir, seekdir, rewinddir, 和telldir. 您的平台可能有描述如何使用它们的手册页。

据报道,MS 库不直接支持这些,而是​​显然更喜欢在那边使用,但据说有几个仿真库提供上述FindFirst功能;FindNext你必须自己对那部分进行排序,因为我对 Win32 不是很熟悉。

于 2011-03-08T06:26:20.453 回答
3

如果你使用 GCC,你可以试试文件系统接口。在这里查看:GNU 文件系统接口参考

于 2011-03-08T06:23:44.163 回答
3

您可以使用可移植到 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;
    }
}
于 2011-03-08T07:11:45.637 回答
1

你应该在 Linux 上使用 getdents() 或 readdir()

于 2011-03-08T06:22:28.287 回答