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

标准库标头 <filesystem> (C++17)学习之文件类型

本篇介绍filesystem文件库的文件类型API。

文件类型

is_block_file

(C++17)

检查给定的路径是否表示块设备
(函数)

is_character_file

(C++17)

检查给定的路径是否表示字符设备
(函数)

is_directory

(C++17)

检查给定的路径是否表示一个目录
(函数)

is_empty

(C++17)

检查给定的路径是否表示一个空文件或空目录
(函数)

is_fifo

(C++17)

检查给定的路径是否表示一个命名管道
(函数)

is_other

(C++17)

检查参数是否表示一个其他文件
(函数)

is_regular_file

(C++17)

检查参数是否表示一个常规文件
(函数)

is_socket

(C++17)

检查参数是否表示一个具名 IPC 套接字
(函数)

is_symlink

(C++17)

检查参数是否表示一个符号链接
(函数)

status_known

(C++17)

检查文件状态是否已知
(函数)

 示例代码:

#include <cstdio>
#include <cstring>
#include <filesystem>
#include <fstream>
#include <iostream>
#include <sys/stat.h>namespace fs = std::filesystem;void demo_status(const fs::path& p, fs::file_status s)
{std::cout << p;// 也可以用: switch(s.type()) { case fs::file_type::regular: ...}if (fs::is_regular_file(s))std::cout << " 是常规文件\n";if (fs::is_directory(s))std::cout << " 是目录\n";if (fs::is_block_file(s))std::cout << " 是块设备\n";if (fs::is_character_file(s))std::cout << " 是字符设备\n";if (fs::is_fifo(s))std::cout << " 是具名 IPC 管道\n";if (fs::is_socket(s))std::cout << " 是具名 IPC 套接字\n";if (fs::is_symlink(s))std::cout << " 是符号链接\n";if (!fs::exists(s))std::cout << " 不存在\n";
}int main()
{// 创建不同种类的文件fs::create_directory("sandbox");fs::create_directory("sandbox/dir");std::ofstream("sandbox/file"); // 创建常规文件//fs::create_symlink("file", "sandbox/symlink");demo_status("sandbox", fs::status("sandbox")); // 直接调用 statusdemo_status("sandbox/dir", fs::status("sandbox/dir"));demo_status("sandbox/file", fs::status("sandbox/file"));fs::remove_all("sandbox");return 0;
}

运行结果:

Linux系统示例代码:

#include <cstdio>
#include <cstring>
#include <filesystem>
#include <fstream>
#include <iostream>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/un.h>
#include <unistd.h>namespace fs = std::filesystem;void demo_status(const fs::path& p, fs::file_status s)
{std::cout << p;// 也可以用: switch(s.type()) { case fs::file_type::regular: ...}if (fs::is_regular_file(s))std::cout << " 是常规文件\n";if (fs::is_directory(s))std::cout << " 是目录\n";if (fs::is_block_file(s))std::cout << " 是块设备\n";if (fs::is_character_file(s))std::cout << " 是字符设备\n";if (fs::is_fifo(s))std::cout << " 是具名 IPC 管道\n";if (fs::is_socket(s))std::cout << " 是具名 IPC 套接字\n";if (fs::is_symlink(s))std::cout << " 是符号链接\n";if (!fs::exists(s))std::cout << " 不存在\n";
}int main()
{// 创建不同种类的文件fs::create_directory("sandbox");fs::create_directory("sandbox/dir");std::ofstream("sandbox/file"); // 创建常规文件fs::create_symlink("file", "sandbox/symlink");mkfifo("sandbox/pipe", 0644);sockaddr_un addr;addr.sun_family = AF_UNIX;std::strcpy(addr.sun_path, "sandbox/sock");int fd = socket(PF_UNIX, SOCK_STREAM, 0);bind(fd, reinterpret_cast<sockaddr*>(&addr), sizeof addr);// 演示不同的状态访问器for (auto it{fs::directory_iterator("sandbox")}; it != fs::directory_iterator(); ++it)demo_status(*it, it->symlink_status()); // 使用 directory_entry 缓存的状态demo_status("/dev/null", fs::status("/dev/null")); // 直接调用 statusdemo_status("/dev/sda", fs::status("/dev/sda"));demo_status("sandbox/no", fs::status("/sandbox/no"));// 清理(推荐采用基于 std::unique_ptr 的自定义删除器)close(fd);fs::remove_all("sandbox");
}

可能的输出:

参考:

https://zh.cppreference.com/w/cpp/header/filesystem

相关文章:

标准库标头 <filesystem> (C++17)学习之文件类型

本篇介绍filesystem文件库的文件类型API。 文件类型 is_block_file (C17) 检查给定的路径是否表示块设备 (函数) is_character_file (C17) 检查给定的路径是否表示字符设备 (函数) is_directory (C17) 检查给定的路径是否表示一个目录 (函数) is_empty (C17) 检查给定的路径是…...

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设…...

mysql笔记4(数据类型)

数据库的数据类型应该是数据库架构师(DBA)和产品经理沟通后依据公司的项目、业务而定的&#xff0c;而且会不停地变化。数据类型的选择方面没有一个统一的标准&#xff0c;但是应该符合业务、项目的逻辑标准。 菜鸟教程 Mysql 数据类型 文章目录 1. int类型2. 浮点数3. 定点数4…...

电脑开机出现no operation system found错误原因分析及解决方法

最近有网友问我电脑一启动提示&#xff1a;no operation system found&#xff0c;这个提示意思是未找到操作系统。并且出现bios能认别硬盘&#xff0c;快捷启动时找不到硬盘&#xff0c;出现该提示的原因有很多&#xff0c;下面我们来详细分析一下开机出现no operation system…...

数学建模笔记—— 主成分分析(PCA)

数学建模笔记—— 主成分分析 主成分分析1. 基本原理1.1 主成分分析方法1.2 数据降维1.3 主成分分析原理1.4 主成分分析思想 2. PCA的计算步骤3. 典型例题4. 主成分分析说明5. python代码实现 主成分分析 1. 基本原理 在实际问题研究中,多变量问题是经常会遇到的。变量太多,无…...

@vueup/vue-quill使用quill-better-table报moduleClass is not a constructor

quill官方中文文档&#xff1a;https://www.kancloud.cn/liuwave/quill/1434144 扩展表格的使用 注意&#xff1a;想要使用表格 quill的版本要是2.0以后 升级到这个版本后 其他一些插件就注册不了了。 安装&#xff1a; npm install quilllatest 版本需要大于2.0版本 npm…...

gpp.bat,g++编译C++源文件的批处理

今天编写一个gpp.bat文件&#xff0c;是专门编译C源文件的批处理&#xff0c;内容如下&#xff1a; g %1.cpp -o %1.exegpp.bat的文件路径&#xff1a;D:\YcjWork\CppTour\gpp.bat 使用方法&#xff0c;在CMD下运行(//两个斜杠后面的内容是注释)&#xff1a; //运行gpp.bat&…...

JDBC:连接数据库

文章目录 报错 报错 Exception in thread “main” java.sql.SQLException: Can not issue SELECT via executeUpdate(). 最后这里输出的还是地址&#xff0c;就是要重写toString()方法&#xff0c;但是我现在还不知道怎么写 修改完的代码&#xff0c;但是数据库显示&#…...

【赵渝强老师】大数据主从架构的单点故障

大数据体系架构中的核心组件都是主从架构&#xff0c;即&#xff1a;存在一个主节点和多个从节点&#xff0c;从而组成一个分布式环境。下图为展示了大数据体系中主从架构的相关组件。   视频讲解如下&#xff1a; 大数据主从架构的单点故障 【赵渝强老师】大数据主从架构的…...

【AutoX.js】选择器 UiSelector

文章目录 原文&#xff1a;https://blog.c12th.cn/archives/37.html选择器 UiSelector笔记直接分析层次分析代码分析 最后 原文&#xff1a;https://blog.c12th.cn/archives/37.html 选择器 UiSelector 笔记 AutoX.js UiSelector 直接分析 用于简单、最直接的查找控件 开启悬…...

Elasticsearch数据写入过程

1. 写入请求 当一个写入请求&#xff08;如 Index、Update 或 Delete 请求&#xff09;通过REST API发送到Elasticsearch时&#xff0c;通常包含一个文档的内容&#xff0c;以及该文档的索引和ID。 2. 请求路由 协调节点&#xff1a;首先&#xff0c;请求会到达一个协调节点…...

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操…...

在C++中,如何避免出现Bug?

C中的主要问题之一是存在大量行为未定义或对程序员来说意外的构造。我们在使用静态分析器检查各种项目时经常会遇到这些问题。但正如我们所知&#xff0c;最佳做法是在编译阶段尽早检测错误。让我们来看看现代C中的一些技术&#xff0c;这些技术不仅帮助编写简单明了的代码&…...

Linux 操作系统 进程(1)

什么是进程 想要了解什么是进程&#xff0c;或者说&#xff0c;为什么会有进程这个概念&#xff0c;我们就需要去了解现代计算机的设计框架(冯诺依曼体系)&#xff1a; 计算机从设计之初就以执行程序为核心任务&#xff0c;也就是运算器从内存中读取&#xff0c;也只从内存中…...

clickhouse-v24.1-离线部署

部署版本 数据库版本&#xff1a;24.1.1.2048 jdk版本&#xff1a;jdk8 4个文件&#xff08;三个ck的包&#xff09;&#xff1a; OpenJDK8U-jdk_x64_linux_hotspot_8u382b05.tar clickhouse-client-24.1.1.2048.x86_64.rpm clickhouse-common-static-24.1.1.2048.x86_64.…...

安卓13删除app 链接库警告弹窗Detected problems with app native

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码修改彩蛋1.前言 有些客户的APP,打开首次会弹窗提示窗口, Detected problems with app native libraries (please consult log for detail):,需要删除这个窗口,避免挡住用户APP。而且这个提示有些app是以t…...

第四次北漂----挣个独立游戏的素材钱

第四次北漂&#xff0c;在智联招聘上&#xff0c;有个小公司主动和我联系。面试了下&#xff0c;决定入职了&#xff0c;osg/osgearth的。月薪两万一。 大跌眼镜的是&#xff0c;我入职后&#xff0c;第一天的工作内容就是接手他的工作&#xff0c;三天后他就离职了。 我之所以…...

漫谈设计模式 [12]:模板方法模式

引导性开场 菜鸟&#xff1a;老大&#xff0c;我最近在做一个项目&#xff0c;遇到了点麻烦。我们有很多相似的操作流程&#xff0c;但每个流程的细节又有些不同。我写了很多重复的代码&#xff0c;感觉很乱。你有啥好办法吗&#xff1f; 老鸟&#xff1a;嗯&#xff0c;听起…...

CSS学习10[重点]--浮动、浮动的效果以及内幕特性

CSS布局——浮动 前言一、普通流二、浮动三、什么是浮动?四、浮动的内幕特性总结 前言 CSS盒子布具的三种机制&#xff1a;普通流&#xff08;标准流&#xff09;、定位、浮动。 一、普通流 普通流&#xff1a;网页内元素自上而下&#xff0c;从左到右排序。 二、浮动 浮动…...

matlab基本语法

基本语法 变量命名规则 区分大小写长度不超过63位字母开头&#xff0c;可以有字母、下划线和数字组成&#xff0c;但不能使用标点应该简洁明了 命令行窗口 >>>clc 清楚命令窗口 >>> claer all 清理工作区内容 注释 %% 注释符 数据类型 1.数字 11 2…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...