C++ 文件系统操作:初学者完全指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

C++ 文件系统操作:初学者指南



文件系统操作是每位程序员的关键任务之一。在 C++ 中,有多种与文件和目录交互的方式:从经典的 fstream 流到现代的 std::filesystem(C++17)。本文将介绍基本操作:文件读写、存在性检查、创建和删除文件夹,以及文件系统导航。所有代码示例均使用 C++ 编写,适合初学者。



1. 通过 fstream 进行文件操作基础



ifstream(文件输入)、ofstream(文件输出)和 fstream(输入/输出)类是处理文本和二进制文件的基本工具。它们位于头文件 <fstream> 中。



从文件读取

要从文件读取数据,请创建一个 ifstream 对象并打开文件。确保文件存在,否则流将处于错误状态。



#include <iostream>#include <fstream>#include <string>

int main() { std::ifstream file("example.txt"); if (!file.is_open()) { std::cerr << "文件打开错误"; return 1; }

std::string line; while (std::getline(file, line)) { std::cout << line << std::endl; }

file.close(); return 0;}


写入文件

使用 ofstream 进行写入。如果文件不存在,它将被创建。如果存在,内容将被覆盖(除非指定了 std::ios::app 标志)。



#include <fstream>

int main() { std::ofstream file("output.txt"); if (!file.is_open()) { std::cerr << "无法创建文件"; return 1; }

file << "Hello, world!"; file << "C++ 文件系统";

file.close(); return 0;}


在文件末尾追加数据

使用 std::ios::app(追加)标志,将数据写入文件末尾,而不删除之前的内容。



std::ofstream file("log.txt", std::ios::app);file << "新记录";file.close();


2. 目录和文件系统操作(C++17)



从 C++17 开始,标准库包含了头文件 <filesystem>,它提供了便捷且跨平台的文件系统操作接口。要使用它,请添加编译标志 -std=c++17(或更高版本)并包含 <filesystem>。



检查文件或目录是否存在

#include <iostream>#include <filesystem>namespace fs = std::filesystem;

int main() { fs::path p = "example.txt"; if (fs::exists(p)) { std::cout << "文件存在"; std::cout << "大小: " << fs::file_size(p) << " 字节"; } else { std::cout << "文件未找到"; } return 0;}


创建和删除目录

#include <filesystem>namespace fs = std::filesystem;

int main() { // 创建单个目录 if (fs::create_directory("my_folder")) { std::cout << "文件夹已创建"; }

// 创建嵌套目录 fs::create_directories("a/b/c");

// 删除空目录 fs::remove("my_folder");

// 删除目录及其所有内容(谨慎使用!) // fs::remove_all("a");

return 0;}


遍历目录内容

#include <iostream>#include <filesystem>namespace fs = std::filesystem;

int main() { std::string path = "."; for (const auto& entry : fs::directory_iterator(path)) { if

博客

书籍推荐