如何使用 C++17 filesystem 库递归列出目录
注意: 要了解如何非递归列出目录,只需将 recursive_directory_iterator 替换为 directory_iterator,或参见我们的完整文章如何使用 C++17 filesystem 库列出目录。
要使用 C++17 filesystem 库 递归列出目录,使用此代码片段:
recursive_list_example.cpp
#include <experimental/filesystem>
using namespace std::experimental::filesystem;
for(const directory_entry& entry : recursive_directory_iterator("my-directory")) {
const auto& path = entry.path();
// ...
}完整示例:
recursive_list_full.cpp
#include <iostream>
#include <string>
#include <experimental/filesystem>
using namespace std;
using namespace std::experimental::filesystem;
int main() {
for(const directory_entry& entry : recursive_directory_iterator("my-directory")) {
// 是文件 / 目录吗?
bool isNormalFile = is_regular_file(entry);
bool isDirectory = is_directory(entry);
auto path = entry.path();
// 路径:my-directory/test.txt
string pathString = path.string();
// 文件名:test.txt
string filenameString = path.filename().string();
// 扩展名:txt
string extensionString = path.extension().string();
// 注意:你也可以直接 "cout << path"
}
}像这样编译:
build_filesystem_example.sh
g++ -o filesystem-example filesystem-example.cpp -lstdc++fs对于此目录:
test-directory-structure.txt
my-directory
├── subdirectory
│ └── subdir-test.txt
└── test.txt这将列出 subdirectory、subdirectory/subdir-test.txt 和 test.txt。
Check out similar posts by category:
C/C++
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow