为什么
recursive_directory_iterator()
没有像据说的那样递归地列出所有子目录?
我已经创建了 C++ 入门书的解决方案,其中我有一个该书的主目录,其中包含每个部分的目录和一些文件。然后每个部分都有每个章节的目录,其中包含所有练习的解决方案。
我尝试分别在递归函数中使用
recursive_directory_iterator
和 directory_iterator
递归地列出所有文件和目录,但两者都列出了主目录中的相同文件和一些目录,但主目录中的所有目录。
例如main有part_1、part_2、part_3、part_4,它只列出part_3中的文件,而不列出其他part_*。我什至尝试传递 follow_directory_symlink,但仍然无法列出所有文件。我做错了什么。
它甚至递归地显示 Part_3 中的所有子目录。
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main() {
fs::path curr("/c++_primer_github"); // I didn't post the original path
for( const auto &entry : fs::recursive_directory_iterator(curr, fs::directory_options::follow_directory_symlink)) {
if (fs::is_directory(entry)) {
std::cout << "[+]" << entry.path().filename() << std::endl;
} else if (fs::is_regular_file(entry)) {
std::cout << entry.path().filename() << " " << entry.file_size() << std::endl;
}
}
return 0;
}
代码工作得非常好,问题是因为我正在使用包含我的存储库文件的目录进行测试,它还有一个 git 文件夹,其中包含我相信由 git 创建的大量文件列表。所以当我在 VS Code 中测试这段代码时,它并没有在终端中显示整个输出,我只能滚动到一定程度,所以其他子目录没有列出,VS Code 终端中的 ctrl+f 目录名称来了没有结果,所以我之前很困惑,但后来我将输出打印到文件中。它包含预期的文件和子目录的完整列表。