10.10 文件系统

大多数系统都有文件系统(file system)的概念,它提供对保存为文件(file)的永久信息的访问机制。不幸的是,文件系统的属性和操纵文件系统的方式在不同系统中差异巨大。为了解决这个问题,<filesystem>中的文件系统库为大多数文件系统中的大多数设施提供了一个一致的接口。使用<filesystem>,我们可以以可移植的方式

·表达文件系统路径以及在文件系统中导航

·检查文件类型及其关联的权限

文件系统库可以处理万国码(unicode),但具体方法已经超出了本书范围。推荐感兴趣的读者进一步阅读C++参考手册[Cppreference]和Boost文件系统文档[Boost]获取更细节的内容。

下面考虑一个例子:

注意,操纵文件系统的程序通常是在一台计算机上与其他程序一起运行的。因此,文件系统的内容在两个命令之间可能发生改变。例如,即使我们首先小心地断言f必须存在,但在下一行询问f是否是一个普通文件时,它完全可能已经不存在了。

path是一个相当复杂的类,它能够处理本地字符集和很多操作系统的规范。特别是,它可以处理由main()呈现的来自命令行的文件名,例如:

path的有效性直到使用时才会检查。即使这样,其有效性也依赖于程序所运行的系统的规范。

一个path自然可用来打开一个文件: ...

Get C++语言导学(原书第2版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.