命名空间
变体
操作

文件系统库 (自 C++17 起)

来自 cppreference.cn
< cpp
 
 
 

文件系统库提供了用于对文件系统及其组件(例如路径、常规文件和目录)执行操作的工具。

文件系统库最初是作为 boost.filesystem 开发的,作为 技术规范 ISO/IEC TS 18822:2015 发布,最终在 C++17 中合并到 ISO C++。 与 C++17 库相比,boost 实现目前可在更多编译器和平台上使用。

如果实现无法访问分层文件系统,或者它不提供必要的功能,则文件系统库工具可能不可用。 如果底层文件系统不支持某些功能(例如,FAT 文件系统缺少符号链接并禁止多个硬链接),则某些功能可能不可用。 在这些情况下,必须报告错误。

如果对此库中函数的调用引入文件系统竞争,即当多个线程、进程或计算机交错访问和修改文件系统中同一对象时,则行为是未定义的

目录

[[编辑]] 库范围定义

  • 文件:一种文件系统对象,用于保存数据,可以写入、从中读取或两者兼而有之。 文件具有名称、属性,其中之一是文件类型
  • 目录:一种充当目录项容器的文件,目录项标识其他文件(其中一些可能是其他嵌套目录)。 当讨论特定文件时,它作为条目出现的目录是其父目录。 父目录可以用相对路径名 ".." 表示。
  • 常规文件:将名称与现有文件(即硬链接)关联的目录项。 如果支持多个硬链接,则在该文件的最后一个硬链接被删除后,该文件将被删除。
  • 符号链接:将名称与路径关联的目录项,该路径可能存在也可能不存在。
  • 其他特殊文件类型:块设备字符设备命名管道套接字
  • 文件名:命名文件的字符字符串。 允许的字符、区分大小写、最大长度和不允许的名称是实现定义的。 名称 "."(点)和 ".."(点点)在库级别具有特殊含义。
  • 路径:标识文件的元素序列。 它以可选的 根名(例如 Windows 上的 "C:""//server")开头,后跟可选的 根目录(例如 Unix 上的 "/"),后跟零个或多个文件名序列(除了最后一个之外,所有文件名都必须是目录或目录链接)。 路径的字符串表示形式(路径名)的本机格式(例如,用作分隔符的字符)和字符编码是实现定义的,此库提供路径的可移植表示形式。
  • 绝对路径:明确标识文件位置的路径。
  • 规范路径:不包含符号链接、"."".." 元素的绝对路径。
  • 相对路径:标识相对于文件系统上某个位置的文件位置的路径。 特殊路径名 "." (点,“当前目录”)和 ".." (点点,“父目录”)是相对路径。

在头文件 <filesystem> 中定义
在命名空间 std::filesystem 中定义
(C++17)
表示路径
(类) [[编辑]]
在文件系统错误时抛出的异常
(类) [[编辑]]
(C++17)
目录项
(类) [[编辑]]
目录内容迭代器
(类) [[编辑]]
目录及其子目录内容迭代器
(类) [[编辑]]
(C++17)
表示文件类型和权限
(类) [[编辑]]
(C++17)
有关文件系统上可用和可用空间的信息
(类) [[编辑]]
(C++17)
文件类型
(枚举) [[编辑]]
(C++17)
标识文件系统权限
(枚举) [[编辑]]
(C++17)
指定权限操作的语义
(枚举) [[编辑]]
(C++17)
指定复制操作的语义
(枚举) [[编辑]]
用于迭代目录内容的选项
(枚举) [[编辑]]
(C++17)
表示文件时间值
(类型别名) [[编辑]]

非成员函数

在头文件 <filesystem> 中定义
在命名空间 std::filesystem 中定义
(C++17)
组合绝对路径
(函数) [[编辑]]
组合规范路径
(函数) [[编辑]]
组合相对路径
(函数) [[编辑]]
(C++17)
复制文件或目录
(函数) [[编辑]]
(C++17)
复制文件内容
(函数) [[编辑]]
(C++17)
复制符号链接
(函数) [[编辑]]
创建新目录
(函数) [[编辑]]
创建硬链接
(函数) [[编辑]]
创建符号链接
(函数) [[编辑]]
(C++17)
返回或设置当前工作目录
(函数) [[编辑]]
(C++17)
检查路径是否指向现有的文件系统对象
(函数) [[编辑]]
(C++17)
检查两个路径是否指向相同的文件系统对象
(函数) [[编辑]]
(C++17)
返回文件的大小
(函数) [[编辑]]
(C++17)
返回指向特定文件的硬链接数
(函数) [[编辑]]
(C++17)
获取或设置上次数据修改时间
(函数) [[编辑]]
(C++17)
修改文件访问权限
(函数) [[编辑]]
(C++17)
获取符号链接的目标
(函数) [[编辑]]
(C++17)(C++17)
删除文件或空目录
递归删除文件或目录及其所有内容
(函数) [[编辑]]
(C++17)
移动或重命名文件或目录
(函数) [[编辑]]
(C++17)
通过截断或零填充更改常规文件的大小
(函数) [[编辑]]
(C++17)
确定文件系统上可用的可用空间
(函数) [[编辑]]
(C++17)(C++17)
确定文件属性
确定文件属性,检查符号链接目标
(函数) [[编辑]]
返回适合临时文件的目录
(函数) [[编辑]]
文件类型
(C++17)
检查给定路径是否指向块设备
(函数) [[编辑]]
检查给定路径是否指向字符设备
(函数) [[编辑]]
(C++17)
检查给定路径是否指向目录
(函数) [[编辑]]
(C++17)
检查给定路径是否指向空文件或目录
(函数) [[编辑]]
(C++17)
检查给定路径是否指向命名管道
(函数) [[编辑]]
(C++17)
检查参数是否指向其他文件
(函数) [[编辑]]
(C++17)
检查参数是否指向常规文件
(函数) [[编辑]]
(C++17)
检查参数是否指向命名 IPC 套接字
(函数) [[编辑]]
(C++17)
检查参数是否指向符号链接
(函数) [[编辑]]
(C++17)
检查文件状态是否已知
(函数) [[编辑]]

[[编辑]] 注解

使用此库可能需要额外的编译器/链接器选项。 9.1 之前的 GNU 实现需要与 -lstdc++fs 链接,9.0 之前的 LLVM 实现需要与 -lc++fs 链接。

特性测试 Std 特性
__cpp_lib_filesystem 201703L (C++17) 文件系统库

[[编辑]] 参见

C++ 文档 关于 文件系统 TS