如何枚举POSIX / c c ++中目录中的所有文件?

时间:2011-03-08 06:16:39

标签: c++ c unix posix vfs

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

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

更新:我现在知道VFS,但我很困惑使用VFS来枚举dir。有什么建议吗?我应该打开dir作为文件吗?

4 个答案:

答案 0 :(得分:4)

POSIX.1-2001指定opendirreaddirclosedirseekdirrewinddirtelldir。您的平台可能有手册页描述如何使用它们。

据报道,MS库并不直接支持这些,而是​​显然更喜欢在那里使用FindFirstFindNext,但据推测,有几个仿真库可以提供上述功能。你必须自己对那部分进行排序,因为我对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()