> For the complete documentation index, see [llms.txt](https://zoupers.gitbook.io/cpp-17-stl-cookbook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zoupers.gitbook.io/cpp-17-stl-cookbook/chapter10-0-chinese.md).

# 第10章 文件系统

如果没有第三方库来帮助我们处理系统路径，那么对文件系统的编程就会非常冗余，因为我们需要处理很多的条件。

有些路径是绝对路径，而有些是相对路径，有时候路径还会互相包含。`.`表示当前目录，`..`表示上级目录。然后，不同系统用来分隔目录的斜杠也不同，Linux, MacOS和各种UNIX变体操作系统上使用的是`/`，而Windows下使用的是`\`，这样就会导致文件的不同。

因为有时程序难免要实现和文件系统相关的功能，所以C++17的STL中添加了对文件系统友好的库。其好的一点就在于可移植性，所以在一个系统中写好后，就可以在不同的系统间运行。

本章中，我们会了解到`path`类是如何工作的，因为其是库中最重要的角色。而后，我们将会了解到，强大但简单的`directory_iterator`和`recursive_directory_iterator`类，其会对文件操作很有帮助。最后，我们将通过一些小并简单的式例工具来完成一些与文件系统相关的任务。对简单的工具有所了解后，大家就可以构建更加复杂的工具了。
