本文主要介绍C++17中的filesystem中的一些常用方法

一、C++17的支持

https://blog.csdn.net/qq_40946921/article/details/90645890

二、头文件及命名空间

#include<filesystem>
using namespace std::filesystem;

三、常用类:

path 类:说白了该类只是对字符串(路径)进行一些处理,这也是文件系统的基石。

directory_entry 类:功如其名,文件入口,这个类才真正接触文件。

directory_iterator 类:获取文件系统目录中文件的迭代器容器,其元素为 directory_entry对象(可用于遍历目录)

file_status 类:用于获取和修改文件(或目录)的属性(需要了解C++11的强枚举类型(即枚举类))

四、使用方法

1. 需要有一个path对象为基础,如果需要修改路径,可以调用其成员函数进行修改(注意其实只是处理字符串)。

2.需要获取文件信息需要通过path构造directory_entry,但需要path一定存在才能调用构造,所以需要实现调用exists(path .)函数确保目录存在才能构造directory_entry(注意文件入口中的exists无法判断)。

3.若需遍历,则可以使用 directory_iterator,进行遍历

演示如下:

#include <iostream>
#include<filesystem>
using namespace std;
using namespace std::filesystem;
int main(){path str("C:\\Windows");if (!exists(str))      //必须先检测目录是否存在才能使用文件入口.return 1;directory_entry entry(str);      //文件入口if (entry.status().type() == file_type::directory)  //这里用了C++11的强枚举类型cout << "该路径是一个目录" << endl;directory_iterator list(str);           //文件入口容器for (auto& it:list) cout << it.path().filename()<< endl;    //通过文件入口(it)获取path对象,再得到path对象的文件名,将之输出system("pause");return 0;
}

五、常用库函数

void copy(const path& from, const path& to) :目录复制

path absolute(const path& pval, const path& base = current_path()) :获取相对于base的绝对路径

bool create_directory(const path& pval) :当目录不存在时创建目录

bool create_directories(const path& pval) :形如/a/b/c这样的,如果都不存在,创建目录结构

bool exists(const path& pval) :用于判断path是否存在

uintmax_t file_size(const path& pval) :返回目录的大小

file_time_type last_write_time(const path& pval) :返回目录最后修改日期的file_time_type对象

bool remove(const path& pval) :删除目录

uintmax_t remove_all(const path& pval) :递归删除目录下所有文件,返回被成功删除的文件个数

void rename(const path& from, const path& to) :移动文件或者重命名

六、类图

未完...

C++17 filesystem 文件系统(详解)相关推荐

  1. NTFS文件系统详解(三)NTFS元文件解析

    NTFS文件系统详解(三)NTFS元文件解析 一. 分析$Boot文件 二.分析文件记录 1. MFT偏移地址计算 2. 文件记录的结构 3. 属性的属性头分析 4. 属性的属性体分析 NTFS文件系 ...

  2. NTFS文件系统详解(二)MBR\EBR基本信息

    NTFS文件系统详解(二)MBR\EBR基本信息 一.MBR结构分析 1. 第一个分区表项 2. 第二个分区表项 3. 第三个分区表项 4. 第四个分区表项 二.EBR结构分析 1. 第一个分区表项 ...

  3. NTFS文件系统详解(一)硬盘基本信息

    NTFS文件系统详解(一)硬盘基本信息 一.硬盘的内部结构 1. 盘面号 2. 磁道 3. 柱面 4. 扇区 二.硬盘的分区结构 NTFS文件系统详解系列 一般硬盘正面贴有产品标签,主要包括厂家信息和 ...

  4. 1.17.Flink 并行度详解(Parallel)、TaskManager与Slot、Operator Level、Execution Environment Level、Client Level等

    1.17.Flink 并行度详解(Parallel) 1.17.1.TaskManager与Slot 1.17.2.TaskManager与Slot 1.17.3.并行度(Parallel) 1.17 ...

  5. linux根文件系统配置,Linux学习笔记__ Linux根文件系统详解

    Linux根文件系统详解 文件系统: rootfs:根文件系统 FHS:Linux boot:系统启动相关的文件,如内核.initrd.以及grub(bootloader) /dev: 设备文件 块 ...

  6. FATFS文件系统详解

    一.文件系统 负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统.即在磁盘上组织文件的方法. 常用的文件系统: FAT / FATFS NTFS: 基于安全性的文件系统,是Windows ...

  7. [自制操作系统] JOS文件系统详解支持工作路径MSH

    本文分为两部分: 第一部分将详细分析JOS的文件系统及文件描述符的实现方法. 第二部分将实现工作路径,提供新的系统调用,完善用户空间工具. 本文中支持的新特性: 支持进程工作目录 提供getcwd与c ...

  8. FastDFS 分布式文件系统详解

    FastDFS 分布式文件系统详解 什么是文件系统 文件系统是操作系统用于在磁盘或分区上组织文件的方法和数据结构.磁盘空间是什么样的我们并不清楚,但文件系统可以给我们呈现一个非常清晰的表象,我们可以创 ...

  9. Windows 7 + Fedora 17 双系统安装详解

    原文地址:http://www.linuxidc.com/Linux/2012-06/62099.htm Windows 7 + Fedora  17 双系统 安装详解+常见错误+注意事项. 之前已经 ...

  10. Linux的proc文件系统详解

    引用自:http://bbs.chinaunix.net/thread-2002769-1-1.html Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它常见的文件系统不同的 ...

最新文章

  1. VS2010非永久性配置和永久配置Opencv
  2. 简评游戏人工智能相关的中文书(下)
  3. 14.查找概论与顺序查找
  4. angular 引入编辑器以及控制器的学习和理解。。。
  5. macOS下nginx配合obs做推流直播.md
  6. 云服务器_整体服务器与微服务
  7. java虚拟机参数优化_JAVA虚拟机JVM参数优化(2):垃圾收集算法选择
  8. c语言第三章作业题答案,c语言第三章简单练习题及答案.doc
  9. 去掉Scala的糖衣(4) -- Type Aliase
  10. (转)好的投资应当是:善良为先,智慧为道,奋斗为本
  11. C# 多线程七之Parallel
  12. android无线充电技术,无线充电Qi通信协议分析,充电qi通信协议
  13. 硅谷之火:人与计算机的未来
  14. 软件项目管理与过程改进 BB平台 题库整理
  15. 二分法解具有单调性的方程
  16. 如何判断如何判断RS232线是直连还是交叉连线
  17. linux_zsh/oh my zsh 版本检查/使用帮助(check and update)/安装最新版zsh
  18. 运维需要懂产品和运营吗?
  19. autoware官方入门教使用
  20. requireJS常用用法

热门文章

  1. 如何修复图片中的瑕疵,怎么快速去水印
  2. 【调剂】黑龙江大学数据科学与技术学院(网安,信息统计)招调剂
  3. 查找论文及其开源代码
  4. Kotlin学习笔记——类和对象
  5. 按头安利 好看又实用的室内工装su模型素材看这里
  6. PlantUML:一款让你爽到起飞的高效代码绘制时序图工具
  7. 矩阵笔记2:矩阵分析(第三版)-史荣昌-第二章:λ-矩阵与矩阵的Jordan标准型
  8. 一文读懂什么是VUE
  9. ROS 北通游戏手柄灵敏度 频率过高, xbox360/ ps2/3模式切换问题
  10. 网络入侵检测系统之Suricata(一)