当前位置: 首页 > news >正文

「C/C++」C++17 之 std::filesystem::directory_entry 文件系统目录条目

在这里插入图片描述

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「C/C++」C/C++程序设计
📚全部专栏
「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合
「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发
「QT」QT5程序设计「File」数据文件格式「PK」Parasolid函数说明

目录

      • std::filesystem::directory_entry 类详解
        • 1. 引用头文件
        • 2. 注意事项
        • 3. 函数构造与对象初始化
          • 3.1 构造函数
          • 3.2 对象初始化
        • 4. 修改器
        • 5. 格式观察器
          • 5.1 路径访问
          • 5.2 文件属性检查
        • 6. 分解
        • 7. 查询
        • 8. 迭代器
        • 9. 元素比较
        • 总结
        • 应用场景

std::filesystem::directory_entry 类详解

1. 引用头文件

std::filesystem::directory_entry 类是 C++17 引入的文件系统库中的一个关键类,用于表示目录中的一个文件或子目录。要使用该类,首先需要包含头文件 <filesystem>

#include <filesystem>
2. 注意事项
  • std::filesystem::directory_entry 类位于 std::filesystem 命名空间中,因此在使用该类时需要添加命名空间前缀 std::filesystem,或使用 using 声明简化。
  • 该类提供了对文件系统条目的封装,使得目录遍历和文件属性查询变得简单。
3. 函数构造与对象初始化
3.1 构造函数

directory_entry 类有多个构造函数,包括默认构造函数和显式参数构造函数。

namespace fs = std::filesystem;// 默认构造函数
fs::directory_entry d1;// 显式参数构造函数
fs::directory_entry d2(fs::current_path());
fs::directory_entry d3("path/to/directory_or_file");
3.2 对象初始化

对象可以通过赋值操作符或 assign 成员函数进行初始化。

fs::directory_entry d4;
d4.assign(fs::current_path());fs::directory_entry d5 = d2; // 拷贝赋值
4. 修改器

replace_filename 成员函数允许修改目录项的文件名。

d2.replace_filename("new_name");
5. 格式观察器
5.1 路径访问

path 成员函数返回一个 std::filesystem::path 对象,表示条目的路径。

fs::path p = d2.path();
std::cout << "Path: " << p << std::endl;
5.2 文件属性检查

directory_entry 类提供了多个成员函数来检查文件类型,如 is_regular_fileis_directory 等。

bool isFile = d2.is_regular_file();
bool isDir = d2.is_directory();
6. 分解

虽然 directory_entry 类本身不提供分解功能,但它返回的 path 对象可以通过 parent_pathfilename 等成员函数进行分解。

fs::path parent = p.parent_path();
fs::path filename = p.filename();
7. 查询
  • 文件大小:file_size 成员函数返回文件的大小(如果条目是一个文件的话)。
  • 最后修改时间:last_write_time 成员函数返回条目的最后修改时间。
auto size = d2.file_size();
auto lastWriteTime = d2.last_write_time();
8. 迭代器

directory_entry 类通常与 directory_iteratorrecursive_directory_iterator 一起使用,用于遍历目录。

for (const auto& entry : fs::directory_iterator(fs::current_path())) {std::cout << "Path: " << entry.path() << std::endl;
}
9. 元素比较

directory_entry 类支持比较运算符,如 ==!=<<= 等,用于比较两个 directory_entry 对象。

fs::directory_entry d6("path/to/another_file");
if (d2 == d6) {std::cout << "d2 and d6 are equal" << std::endl;
}
总结

std::filesystem::directory_entry 类是 C++17 文件系统库中的一个核心类,用于表示目录中的一个文件或子目录。它提供了对文件系统条目的封装,使得目录遍历和文件属性查询变得简单。通过构造函数和赋值操作,可以方便地初始化对象。通过 path 成员函数和各类检查函数,可以获取条目的路径和属性。directory_entry 类还支持与迭代器一起使用,用于遍历目录。

应用场景
  • 文件系统导航:遍历目录结构,获取文件和子目录信息。
  • 文件属性查询:检查文件类型、大小、最后修改时间等。
  • 文件管理应用:实现文件浏览器、文件管理器等功能。

通过以上对 std::filesystem::directory_entry 类的详细解析,希望读者能够更好地理解和使用该类,进行高效的文件系统操作。


在这里插入图片描述


http://www.mrgr.cn/news/59024.html

相关文章:

  • gin入门教程(10):实现jwt认证
  • qt QBuffer详解
  • C# Unity 同步/异步编程和多线程什么关系?async/await和coroutine又是什么?
  • C++20中头文件syncstream的使用
  • 【机器学习基础】全连接层
  • Spring Boot:植物健康监测的智能管家
  • sql语句中的Group By 分组查询
  • AI神器,豆包自带抠图,完全免费!路人甲、去水印,轻轻一擦,全去掉
  • 今日所学1024和1026
  • gma 2.0.14 (2024.10.18) | GmaGIS V0.0.0a5 更新日志
  • DevOps 全面解析:实现开发与运维的无缝协作
  • 基于SSM美容院管理系统的设计
  • 【Linux操作系统】Linux配置OpenSSH服务器步骤记录
  • Vite+Vue3+qiankun构建微前端
  • C++数据结构-最小生成树:普利姆(Prim)算法及C/C++代码实现
  • css 对称按钮,中间斜平行间隔,两头半圆
  • H3CNE-10-H3C构建简单企业网络
  • 二十三种设计模式之命令模式
  • 零代码快速开发智能体 |甘肃旅游通
  • Visual Studio Code
  • PKI证书体系(数字证书)
  • 【Spring】详解SpringMVC,一篇文章带你快速入门
  • LLAMAFACTORY:一键优化大型语言模型微调的利器
  • [旧日谈]高清画面撕裂问题考
  • 解决Redis缓存穿透(缓存空对象、布隆过滤器)
  • React中的hook