C++17 filesystem 文件系统(详解)

C++17 filesystem 文件系统(详解)本文主要介绍 C 17 中的 filesystem 中的一些常用方法一 C 17 的支持 https blog csdn net article details 二 头文件及命名空间 include filesystem usingnamespa filesystem 三 常用类 path 类 说白 filesystem

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

一、C++17的支持

https://blog.csdn.net/_/article/details/

二、头文件及命名空间

#include 
  
    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 
  
    #include 
   
     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; } 
    
  

C++17 filesystem 文件系统(详解)

五、常用库函数

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 文件系统(详解)

未完…

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220061.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午9:20
下一篇 2026年3月17日 下午9:20


相关推荐

  • PHP教程 Array 函数_deft最后一舞

    PHP教程 Array 函数_deft最后一舞…件的属主、属组和权限,防止权限不一致问题。#chowndb2inst1:db2iadm1S0003170.LOG#chowndb2inst1:db2iadm1S0003171.LOG#chowndb2inst1:db2iadm1S0003172.LOG#chowndb2inst1:db2iadm1S0003173.LOG#chowndb2inst1:db2iadm…

    2025年5月27日
    5
  • 设备监控系统[通俗易懂]

    设备监控系统[通俗易懂]设备监控系统链接:https://www.zhihu.com/question/19973178/answer/75054424https://www.oneapm.com/http://ope

    2022年7月1日
    31
  • 机器学习之集成学习

    1.什么是集成学习?如果你随机向几千个人询问一个复杂问题,然后汇总它们的答案。在许多情况下你会发现,这个汇总的回答比专家的答案还要好,这被称为集体智慧,同样,如果你聚合一组预测器的预测,得到的预测

    2021年12月30日
    45
  • 免费申请国外免费域名超详细教程

    免费申请国外免费域名超详细教程1.首先申请免费域名网站:https://my.freenom.com/domains.php2.填入域名,这里我们以xcflag为列(尽量选择复杂一点的或者五个字母以上的域名,因为简单的有些域名是需要收费的),点击检查可用性。3.可以看到很多免费的域名(用的谷歌翻译插件,翻译有时候不是很准确,free翻译过来应该是免费而不是自由,之后会写一些关于谷歌插件的笔记,详细讲解)4.我们选择xcflag.tk点击立即获取,稍等一会点击购物车查看绿色按钮5.默认三个月试用,这里下拉框我们选择十二个月

    2022年6月30日
    51
  • 连不上docker mysql_docker跨主机通信

    连不上docker mysql_docker跨主机通信宿主机连接docker中的mysqldokcer安装mysqldockerrun\–namemysql\-v$PWD/mysql:/var/lib/mysql\-p3306:3306\-eMYSQL_ROOT_PASSWORD=123456\-dmysql:5.7宿主机连接docker中的mysql错误的连接方式$mysql-uroot-pEnterpasswor…

    2022年8月21日
    8
  • 程序员:为什么“基础不牢”成为我薪资被砍的理由?!

    程序员:为什么“基础不牢”成为我薪资被砍的理由?!

    2021年6月14日
    137

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号