Rust 文件系统操作:实用示例与技巧

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

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

开始课程

在 Rust 中操作文件系统:实战指南



Rust 是一种现代系统编程语言,它赋予开发者对内存的完全控制权,同时保证安全性。文件系统操作是几乎所有项目中都会遇到的基础任务。在本文中,我们将通过实际示例,讲解如何读写文件、管理目录以及遍历文件夹。所有示例均使用 Rust 编写,可直接使用。



核心模块与结构体



在 Rust 中,文件系统操作由 std::fs(文件系统)模块负责,路径操作则由 std::path 模块处理。关键类型包括:



  • std::fs::File — 表示一个已打开的文件。
  • std::fs::read_dir — 用于遍历目录内容的迭代器。
  • std::path::Path 和 std::path::PathBuf — 用于路径操作。


导入模块:



use std::fs;use std::path::Path;


读取整个文件



读取小型文本文件最简单的方法是使用 fs::read_to_string 函数。它返回 Result<String>。



use std::fs;

fn main() { let content = fs::read_to_string("example.txt") .expect("无法读取文件"); println!("文件内容:{}", content);}


如果文件不存在或没有访问权限,程序将 panic 终止。在实际项目中,应使用 match 或 ? 操作符进行错误处理。



读取时的错误处理



use std::fs;

fn read_file(path: &str) -> Result<String, std::io::Error> { fs::read_to_string(path)}

fn main() { match read_file("config.txt") { Ok(data) => println!("{}", data), Err(e) => eprintln!("错误:{}", e), }}


向文件写入数据



写入文件可以使用 fs::write(覆盖文件)或通过 OpenOptions 创建 File 对象。



简单写入字符串



use std::fs;

fn main() { let data = "Hello, Rust!"; fs::write("output.txt", data) .expect("无法写入文件"); println!("文件写入成功");}


追加写入文件末尾



use std::fs::OpenOptions;use std::io::Write;

fn main() { let mut file = OpenOptions::new() .append(true) .create(true) .open("log.txt") .expect("无法打开文件");

writeln!(file, "{} - 日志记录", chrono::Local::now()) .expect("无法写入");}


注意:OpenOptions 允许灵活配置模式——创建、覆盖、追加、读取。



目录操作



创建、删除和遍历文件夹是常见任务。下面我们来逐一介绍。



创建新目录



use std::fs;

fn main() { fs::create_dir("new_folder") .expect("无法创建文件夹"); // 创建嵌套文件夹(递归) fs::create_dir_all("parent/child/grandchild") .expect("无法创建嵌套文件夹");}


删除目录



use std::fs;

fn main() { // 仅删除空文件夹 fs::remove_dir("empty_folder").ok(); // 递归删除所有内容 fs::remove_dir_all("temp_data") .expect("无法删除文件夹");}


请谨慎使用 remove_dir_all——它会永久删除所有内容。



遍历目录内容



遍历目录中的文件和文件夹:



use std::fs;

fn main() { let entries = fs::read_dir(".") .expect("无法读取目录");\

博客

书籍推荐