C++ 库 - <filesystem>



C++ 中的<filesystem> 头文件提供了一组用于执行文件系统操作的函数,例如操作路径、复制或删除文件以及检查文件状态。

如果实现无法访问分层文件系统,或者它不提供必要的容量,则 <filesystem> 库可能不可用。如果底层文件系统(例如 FAT(文件分配表))不支持某些功能,则这些功能可能不可用。

包含 <filesystem> 头文件

要在 C++ 程序中包含 <filesystem> 头文件,可以使用以下语法。

#include <filesystem>

<filesystem> 头文件的函数

以下是 <filesystem> 头文件中所有函数的列表。

路径操作函数

这些路径操作函数对文件路径进行操作,以组合、转换或解析它们。

序号 函数和说明
1 absolute

此函数基于给定的相对路径或绝对路径组合绝对路径。

2 canonical 和 weakly_canonical

这些函数通过解析所有符号链接和相对路径将路径转换为规范形式。

3 relative, proximate

这些函数组合从一个路径到另一个路径的相对路径。

4 copy

此函数复制文件或目录。

5 copy_file

此函数复制单个文件的内容。

6 copy_symlink

此函数复制符号链接。

7 create_directory, create_directories

这些函数创建单个/多个新目录。

8 create_hard_link

此函数创建一个硬链接,允许单个文件具有多个目录条目。

9 create_symlink, create_directory_symlink

这些函数为文件创建一个符号链接。

10 current_path

此函数返回或设置当前工作目录。

11 exists

此函数检查路径是否引用现有的文件系统对象。

12 equivalent

此函数检查两个路径是否引用同一个文件系统对象。

13 file_size

此函数返回文件的大小。

14 hard_link_count

此函数返回引用特定文件的硬链接数。

15 last_write_time

此函数获取或设置上次数据修改的时间。

16 permissions

此函数修改文件访问权限。

17 read_symlink

此函数获取符号链接的目标。

18 remove

此函数删除文件或空目录。

19 remove_all

此函数删除文件或递归地删除文件或目录及其所有内容。

20 rename

此函数移动或重命名文件或目录。

21 resize_file

此函数通过截断或零填充来更改常规文件的大小。

22 space

此函数确定文件系统上可用的可用空间。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

路径操作示例

在下面的示例中,我们将使用 exists() 检查指定的路径 (filePath) 是否引用现有的文件系统对象。

#include <iostream> #include <filesystem> int main() { std::filesystem::path filePath{"example.txt"}; if (std::filesystem::exists(filePath)) { std::cout << "The file exists." << std::endl; } else { std::cout << "The file does not exist." << std::endl; } return 0; }

输出

如果我们运行上面的代码,它将生成以下输出:

The file does not exist.

文件类型

<filesystem> 库提供了一些函数来确定路径指定的文件或目录的类型。这些函数用于了解文件的特性并根据文件类型实现逻辑。

序号 函数和说明
1 is_block_file

此函数检查给定路径是否引用块设备。

2 is_character_file

此函数检查给定路径是否引用字符设备。

3 is_directory

此函数检查给定路径是否引用目录。

4 is_empty

此函数检查给定路径是否引用空文件或目录。

5 is_fifo

此函数检查给定路径是否引用命名管道。

6 is_other

此函数检查参数是否引用其他文件。

7 is_regular_file

此函数检查参数是否引用常规文件。

8 is_socket

此函数检查参数是否引用命名 IPC 套接字。

9 is_symlink

此函数检查参数是否引用符号链接。

10 status_known

此函数检查文件状态是否已知。

检查指定的路径

在下面的示例中,我们将使用 is_directory 检查指定的路径 (dirPath) 是否引用目录。

#include <iostream> #include <filesystem> int main() { std::filesystem::path dirPath{"my_directory"}; if (std::filesystem::is_directory(dirPath)) { std::cout << "This path refers to a directory." << std::endl; } else { std::cout << "This path does not refer to a directory." << std::endl; } return 0; }

输出

如果我们运行上面的代码,它将生成以下输出:

This path does not refer to a directory.
广告