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

c++17文件系统

在编程世界中,目录操作是不可或缺的一部分。无论你开发什么
你都需要与文件系统(Filesystem)进行交互。C++ Filesystem库提供了一种标准化和跨平台的方式来进行这些操作。

一、如何创建目录
create_directories支持创建多级目录
create_directory只能创建一个
#include <iostream>
using namespace std;
#include <filesystem>
namespace fs = std::filesystem;
int main()
{fs::create_directories("D:\\temp\\ty\\aa");//支持创建多级目录fs::create_directory("D:\\temp1");//只能创建一个system("pause");return 0;
}

获取当前工作目录:

#include <iostream>
using namespace std;
#include <filesystem>
namespace fs = std::filesystem;int main()
{std::filesystem::path currentPath = std::filesystem::current_path();std::cout << "Current working directory is: " << currentPath << std::endl;system("pause");return 0;
}

结果:
在这里插入图片描述
如何遍历目录:
头文件提供了一些函数来遍历目录中的文件和子目录。可以使用directory_iterator类来遍历目录中

#include <iostream>
using namespace std;
#include <filesystem>
namespace fs = std::filesystem;int main()
{fs::path mypath = "D:\\VC++笔记\\2024";for (auto& entry : fs::directory_iterator(mypath)) {std::cout << entry.path() << std::endl;}system("pause");return 0;
}

结果:
在这里插入图片描述

如果你只想遍历目录中的文件,可以使用is_regular_file()函数来判断一个条目是否是一个普通文件:

#include <iostream>
using namespace std;
#include <filesystem>
namespace fs = std::filesystem;int main()
{fs::path mypath = "D:\\VC++笔记\\2024";for (auto& entry : fs::directory_iterator(mypath)) {if (fs::is_regular_file(entry)) {std::cout << entry.path() << std::endl;}}system("pause");return 0;
}

在这里插入图片描述
另外还有拷贝,移除操作

fs::copy("source.txt", "destination.txt");
fs::remove("ty.txt");
二、path类

path:D:\temp\ty\aa\file.txt

方法功能描述示例
parent_path()获取父路径D:\temp\ty\aa
filename()获取文件名file.txt
extension()获取文件扩展名.txt
stem()获取不带扩展名的文件名file
#include <iostream>
using namespace std;
#include <filesystem>
namespace fs = std::filesystem;int main()
{fs::path p = "D:\\temp\\ty\\aa\\file.txt";std::cout << "Parent path: " << p.parent_path() << std::endl;  // 输出:D:\\temp\\ty\\aastd::cout << "Filename: " << p.filename() << std::endl;  // 输出:file.txtstd::cout << "stem: " << p.stem() << std::endl;  // 输出:filestd::cout << "extension: " << p.extension() << std::endl;  // 输出:.txtsystem("pause");return 0;
}

结果:
在这里插入图片描述
路径拼接:

#include <iostream>
using namespace std;
#include <filesystem>
namespace fs = std::filesystem;int main()
{fs::path p1 = "C:/Users/";fs::path p2 = "Ty/Documents/";fs::path p3 = p1 / p2;std::cout << p3 << std::endl;system("pause");return 0;
}

结果:
在这里插入图片描述


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

相关文章:

  • 渗透利器-kali工具 (第三章-4) sqlmap之sql注入原理利用
  • 【Linux】【守护进程】总结整理
  • 软件设计师中级 第9章 数据库技术基础
  • 又发现了Mac妙控鼠标的新使用方法
  • LabVIEW配电产品精度测试系统
  • 【深圳大学/大学物理实验2】霍尔效应及其应用实验预习参考
  • 什么是 eCPRI,它对 5G 和 Open RAN 有何贡献?
  • 计算机毕业设计Python流量检测可视化 DDos攻击流量检测与可视化分析 SDN web渗透测试系统 网络安全 信息安全 大数据毕业设计
  • PyQt入门指南四十六 性能优化策略
  • Day 56 || 99.岛屿数量、100.岛屿的最大面积
  • 【鉴权】深入了解 Cookie:Web 开发中的客户端存储小数据
  • 计算机毕业设计Python+Neo4j中华古诗词可视化 古诗词智能问答系统 古诗词数据分析 古诗词情感分析 PyTorch Tensorflow LSTM
  • RK3568平台开发系列讲解(设备树篇)设备树中CPU描述
  • //二维数组的遍历方式
  • pandas习题 054:将两个 DataFrame 导出到 Excel 的不同表
  • 【系统集成项目管理工程师】英语词汇对照表-项目管理类
  • Kubernetes 调度器调度策略的资源分配不均问题如何解决?
  • stm8开发笔记--STVD开发软件的安装
  • 针对oneplus6 怎么选择lineage源码的什么分支
  • vue3中配置svg图标
  • 公开仓库改私有再配置公钥后Git拉取仍需要输入用户名的问题
  • 【Linux】一篇文章轻松搞懂基本指令
  • 大牛直播SDK如何实现Android平台多路RTSP播放?
  • Python 连接 Redis 进行增删改查(CRUD)操作
  • Python venv 虚拟环境 相关 Windows环境 2024 /11/9
  • 什么是Flutter,有什么特点