std::filesystem::directory_entry
是 C++17 文件系统库中的一个类,用于表示目录中的一个文件或子目录。它封装了文件系统中的一个条目,并提供了一些方法来访问条目的属性和路径。它的主要用途是让你可以遍历目录并获取每个条目的信息。
主要功能
-
访问路径:
std::filesystem::path path = entry.path();
path()
方法返回一个std::filesystem::path
对象,表示条目的路径。 -
检查条目类型:
bool is_file = entry.is_regular_file(); bool is_directory = entry.is_directory();
提供了方法来检查条目的类型(普通文件、目录等)。
-
获取文件大小:
auto size = entry.file_size();
file_size()
方法返回文件的大小(如果条目是一个文件的话)。 -
获取最后修改时间:
auto ftime = entry.last_write_time();
last_write_time()
方法返回条目的最后修改时间。
示例用法
#include <iostream>
#include <filesystem>
int main() {
namespace fs = std::filesystem;
fs::path dir = "."; // 当前目录
for (const auto& entry : fs::directory_iterator(dir)) {
std::cout << "Path: " << entry.path() << '\n';
std::cout << "Is file: " << entry.is_regular_file() << '\n';
std::cout << "Is directory: " << entry.is_directory() << '\n';
if (entry.is_regular_file()) {
std::cout << "Size: " << entry.file_size() << " bytes\n";
}
std::cout << '\n';
}
return 0;
}
主要特点
- 封装:
std::filesystem::directory_entry
封装了对文件系统条目的访问,使得目录遍历和文件属性查询变得简单。 - 类型安全: 提供了方法来检查条目的类型,减少了因类型不匹配而导致的错误。
- 跨平台: 与 C++17 标准库一起工作,
std::filesystem
提供了跨平台的文件系统功能。
总之,std::filesystem::directory_entry
是一个方便的工具,用于处理和查询文件系统中的条目,适用于目录遍历和文件系统操作。