【Linux】【C++17】filesystem 工具,常用集合

文章目录

  • 1. std::experimental::filesystem::exists() 查找文件是否存在
  • 2. std::experimental::filesystem::is_directory() 判断是否是一个目录
  • 3. std::experimental::filesystem::create_directory() 单层级目录创建
    • std::experimental::filesystem::create_directories 多层级目录创建
  • 4. class std::experimental::filesystem::directory_iterator 文件迭代器类
  • 5. class std::experimental::filesystem::path 文件路径类

🔗cpp官网链接指路

header:

<experimental/filesystem>

编译需链接如下库:

-lstdc++fs

1. std::experimental::filesystem::exists() 查找文件是否存在

content:

bool exists( file_status s )	// 1
bool exists( const path& p );	// 2
bool exists( const path& p, error_code& ec )

1)相当于 status_known(s) && s.type() != file_type::not_found
2)相当于 exists(status(p)) or exists(status(p, ec))

2. std::experimental::filesystem::is_directory() 判断是否是一个目录

bool is_directory( file_status s );					// 1
bool is_directory( const path& p );					// 2
bool is_directory( const path& p, error_code& ec );	// 3

1)相当于 s.type() == file_type::directory
2)相当于 is_directory(status(p))
3)相当于 is_directory(status(p, ec)). Returns false if error occurs.


3. std::experimental::filesystem::create_directory() 单层级目录创建

content:

// 1
bool create_directory( const path& p );		
bool create_directory( const path& p, error_code& ec );
// 2
bool create_directory( const path& p, const path& existing_p );	
bool create_directory( const path& p, const path& existing_p, error_code& ec );

1) 使用 static_cast(fs::perms::all) 的第二个参数创建目录 p (父目录必须已经存在)。如果 p 已经存在并且已经是一个目录,则函数不执行任何操作(此条件不作为错误处理)。

2)与(1)相同,只不过新目录的属性是从现有的 _ p 复制的(它必须是一个已存在的目录)。复制哪些属性取决于操作系统。

std::experimental::filesystem::create_directories 多层级目录创建

content:

bool create_directories( const path& p );
bool create_directories( const path& p, error_code& ec );

3)对不存在的 p 的每个元素执行 (1)

4. class std::experimental::filesystem::directory_iterator 文件迭代器类

constructor:

directory_iterator();
explicit directory_iterator( const path& p );
directory_iterator( const path& p, error_code& ec );
directory_iterator( const directory_iterator& ) = default;
directory_iterator( directory_iterator&& ) = default;

5. class std::experimental::filesystem::path 文件路径类

constructor:

path();
path( const path& p );
path( path&& p );
template< class Source >
path( const Source& source );
template< class InputIt >
path( InputIt first, InputIt last );
template< class Source >
path( const Source& source, const std::locale& loc );
template< class InputIt >
path( InputIt first, InputIt last, const std::locale& loc );

Decomposition

APIDISCUSSION
root_namereturns the root-name of the path, if present (public member function)
root_directoryreturns the root directory of the path, if present (public member function)
root_pathreturns the root path of the path, if present (public member function)
relative_pathreturns path relative to the root path (public member function)
parent_pathreturns the path of the parent path (public member function)
filenamereturns the filename path component (public member function)
stemreturns the stem path component (public member function)
extensionreturns the file extension path component (public member function)

🥰如果本文对你有些帮助,请给个赞或收藏,你的支持是对作者大大莫大的鼓励!!(✿◡‿◡) 欢迎评论留言~~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/100991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么选择虚拟展会展览?了解虚拟展会展览的应用领域

引言&#xff1a; 相较于传统的实体展览&#xff0c;虚拟展会展览具有吸引力和便捷性&#xff0c;能够在全球范围内进行宣传活动。这种创新形式不仅能够降低成本、扩大受众范围&#xff0c;还能够提供没有过的互动性和数据分析。 一&#xff0e;虚拟展会展览简介 虚拟展会展览…

EasyExcel 简单导入/导出 Controller Demo

1、导入EasyExcel依赖 <!--导入EasyExcel依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.5</version&g…

Laya3.0 入门教程

点击play箭头 点击右边的开发者工具 就会弹出 chrome的调试窗口 然后定位到你自己的ts文件 直接在ts里断点即可 不需要js文件 如何自动生成代码&#xff1f; 比如你打开一个新项目 里面显示的是当前场景 只需要点击 UI运行时 右边的框就可以了 他会自动弹窗提示你 创建一个文…

虹科分享 | 确保冻干工艺开发中精确测量和数据完整性的5步指南

虹科分享 | 确保冻干工艺开发中精确测量和数据完整性的5步指南 介绍 冻干周期的工艺开发在冻干中起着至关重要的作用&#xff0c;因为它可以优化关键工艺参数&#xff0c;以实现理想的产品质量和工艺一致性。优化冻干工艺还可以缩短运行时间&#xff0c;尽早发现关键错误&…

Practical Memory Leak Detection using Guarded Value-Flow Analysis 论文阅读

本文于 2007 年投稿于 ACM-SIGPLAN 会议1。 概述 指针在代码编写过程中可能出现以下两种问题&#xff1a; 存在一条执行路径&#xff0c;指针未成功释放&#xff08;内存泄漏&#xff09;&#xff0c;如下面代码中注释部分所表明的&#xff1a; int foo() {int *p malloc(4 …

centos下安装配置redis7

1、找个目录下载安装包 sudo wget https://download.redis.io/release/redis-7.0.0.tar.gz 2、将tar.gz包解压至指定目录下 sudo mkdir /home/redis sudo tar -zxvf redis-7.0.0.tar.gz -C /home/redis 3、安装gcc-c yum install gcc-c 4、切换到redis-7.0.0目录下 5、修改…

解决网页 H5 对接微信 JSSDK 后自定义分享和跳转APP等没效果

导致的原因 在聊天窗口直接点击一个文本链接&#xff0c;现在微信JSSDK已经不支持这样使用。 解决办法1 将文本链接生成一个二维码&#xff0c;然后微信扫码进入这个链接。 解决办法2 将这个文本链接收藏&#xff0c;然后从收藏打开这个链接。

学习记忆——数学篇——案例——代数——方程——一元二次方程

重点记忆法 a x 2 b x c 0 ax^2bxc0 ax2bxc0 整体可以由&#xff1a; 根&#xff08;多少&#xff0c;正负&#xff0c;区间&#xff09; ⟹ \Longrightarrow ⟹ △ △ △ ⟹ \Longrightarrow ⟹ 求根公式 x 1 , 2 x_{1,2} x1,2​ − b △ 2 a \frac{-b\sqrt{△}}{2a} 2…

LaunchView/启动页 的实现

1. 创建启动画板&#xff0c;LaunchScreen.storyboard 添加组件如图: 2. 项目中设置只支持竖屏&#xff0c;添加启动画板&#xff0c;如图: 3. 创建启动画面动画视图&#xff0c;LaunchView.swift import SwiftUI/// 启动视图 struct LaunchView: View {/// 字符串转换为字符串…

SQL获取正数第N个或倒数第N个数据

这里我们使用Order By与Limit的组合&#xff1a; Order By&#xff1a;可以将某个序列值按照从大到小或从小到大排序Limit&#xff1a;如果类似Limit 5表示前5个&#xff0c;Limit 3,5表示从第4个位置&#xff08;以0为开始&#xff09;开始往后取5个 通过这样的组合就可以实…

TensorFlow入门(十六、识别模糊手写图片)

TensorFlow在图像识别方面,提供了多个开源的训练数据集,比如CIFAR-10数据集、FASHION MNIST数据集、MNIST数据集。 CIFAR-10数据集有10个种类,由6万个32x32像素的彩色图像组成,每个类有6千个图像。6万个图像包含5万个训练图像和1万个测试图像。 FASHION MNIST数据集由衣服、鞋子…

社会工程学

1.概述 信息安全分为“硬安全 ”和“软安全 ”两个部分。所谓“硬安全”主要包括具体的IT安全技术&#xff08;比如防火墙、入侵检测、漏洞扫描、拒绝服务攻击、缓冲区溢出攻击、等等&#xff09;&#xff1b;而“软安全”主要涉及管理、心理学、文化、人际交往等方面&#xff…

java - 设计模式 - 状态模式

文章目录 前言java - 设计模式 - 状态模式1. 概述2. 作用3. 示例 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#xf…

ES6之Array.from和Array.of

Array.from 用于将两类对象转为真正的数组&#xff1a; 1、类似数组的对象&#xff08;array-like object&#xff09; 2、可遍历&#xff08;iterable&#xff09;的对象&#xff08;包括 ES6 新增的数据结构 Set 和 Map&#xff09; let arrayLike {0: a,1: b,2: c,leng…

TensorFlow入门(十九、softmax算法处理分类问题)

softmax是什么? Sigmoid、Tanh、ReLU等激活函数,输出值只有两种(0、1,或-1、1或0、x),而实际现实生活中往往需要对某一问题进行多种分类。例如之前识别图片中模糊手写数字的例子,这个时候就需要使用softmax算法。 softmax的算法逻辑 如果判断输入属于某一个类的概率大于属于其…

在SSL中进行交叉熵学习的步骤

在半监督学习&#xff08;Semi-Supervised Learning&#xff0c;SSL&#xff09;中进行交叉熵学习通常包括以下步骤&#xff1a; 准备标注数据和未标注数据 首先&#xff0c;你需要准备带有标签的标注数据和没有标签的未标注数据。标注数据通常是在任务中手动标记的&#xff…

Android系统定制之监听USB键盘来判断是否弹出软键盘

一.项目背景 在设备上弹出软键盘,会将一大部分UI遮挡起来,造成很多图标无法看到和点击,使用起来不方便,因此通过插入usb键盘输入代替软键盘,但是点击输入框默认会弹出软键盘,因此想要插入USB键盘时,默认关闭软键盘,拔出键盘时再弹出,方便用户使用 二.设计思路 2.1…

CPU型号参数和SAS卡参数说明

CPU型号 2*CPU Intel 4214 (2.2G/17M/12C/24T/85W) 解释&#xff1a; CPU&#xff1a;2颗 Intel Xeon Silver 4214 处理器 频率&#xff1a;2.2 GHz 缓存&#xff1a;17 MB 核心数量&#xff1a;12核心 线程数量&#xff1a;24线程 功耗&#xff1a;85W 1*SAS HBA卡SAS3008…

JavaScript进阶 第一天笔记

JavaScript 进阶 - 第1天 学习作用域、变量提升、闭包等语言特征&#xff0c;加深对 JavaScript 的理解&#xff0c;掌握变量赋值、函数声明的简洁语法&#xff0c;降低代码的冗余度。 理解作用域对程序执行的影响能够分析程序执行的作用域范围理解闭包本质&#xff0c;利用闭包…

可拓展的低代码全栈框架

尽管现在越来越多的人开始对低代码开发感兴趣&#xff0c;但已有低代码方案的局限性仍然让大家有所保留。其中最常见的担忧莫过于低代码缺乏灵活性以及容易被厂商锁定。 显然这样的担忧是合理的&#xff0c;因为大家都不希望在实现特定功能的时候才发现低代码平台无法支持&…