类别 | 说明 |
---|
directory_iterator | 只遍历目录的当前层级 |
recursive_directory_iterator | 递归遍历所有子目录 |
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main(int argc, char* argv[]) {
fs::path root_path = (argc > 1) ? fs::path(argv[1]) : fs::current_path();
try {
if (!fs::exists(root_path)) {
std::cerr << "路径不存在: " << root_path << std::endl;
return 1;
}
std::cout << "遍历目录: " << root_path << std::endl;
for (const auto& entry : fs::recursive_directory_iterator(root_path)) {
std::cout << entry.path();
if (entry.is_directory()) {
std::cout << " [目录]";
}
else if (entry.is_regular_file()) {
std::cout << " [普通文件]";
}
else if (entry.is_symlink()) {
std::cout << " [符号链接]";
}
else {
std::cout << " [其他]";
}
std::cout << std::endl;
}
}
catch (const fs::filesystem_error& e) {
std::cerr << "文件系统错误: " << e.what() << std::endl;
}
return 0;
}
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main(int argc, char* argv[]) {
fs::path dir_path = (argc > 1) ? fs::path(argv[1]) : fs::current_path();
try {
if (!fs::exists(dir_path) || !fs::is_directory(dir_path)) {
std::cerr << "路径无效或不是目录: " << dir_path << std::endl;
return 1;
}
std::cout << "遍历目录: " << dir_path << std::endl;
for (const auto& entry : fs::directory_iterator(dir_path)) {
std::cout << entry.path();
if (entry.is_directory()) {
std::cout << " [目录]";
} else if (entry.is_regular_file()) {
std::cout << " [普通文件]";
} else if (entry.is_symlink()) {
std::cout << " [符号链接]";
} else {
std::cout << " [其他]";
}
std::cout << std::endl;
}
} catch (const fs::filesystem_error& e) {
std::cerr << "文件系统错误: " << e.what() << std::endl;
}
return 0;
}