在 Rust 中处理文件系统:初学者完整指南

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

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

开始课程

在 Rust 中处理文件系统简介

Rust 是一种现代系统编程语言,非常注重安全性、性能和对内存的控制。文件系统处理是每位开发人员都会遇到的基本任务之一。在本文中,我们将详细介绍如何读取和写入文件、创建目录、处理错误以及使用标准库 std::fs 来有效地与文件系统交互。

我们将从最基础的内容开始,逐步过渡到更复杂的场景。所有代码示例均用 Rust 编写,并可直接运行。如果您刚开始学习 Rust,本文将是掌握该语言输入输出(I/O)的绝佳起点。



用于文件系统处理的主要模块和类型

在 Rust 中,所有用于处理文件和目录的功能都集中在 std::fs 模块中。此外,来自 std::path 模块的 Path 和 PathBuf 类型也扮演着重要角色,它们表示文件和目录的路径。



Path 和 PathBuf 类型

Path 是一个切片,用于在不拥有数据的情况下处理路径。PathBuf 是一个拥有所有权的版本,可以修改。它们提供了便捷的方法来操作路径。

use std::path::Path;use std::path::PathBuf;

fn main() { // 创建 PathBuf let mut path = PathBuf::from("/tmp"); path.push("example.txt"); println!("路径: {}", path.display());

// 转换为 Path let path_ref: &Path = path.as_path(); println!("父目录: {:?}", path_ref.parent());}


std::fs 模块

std::fs 模块包含用于文件系统处理的基本函数。以下是常用的一些:

  • read_to_string — 将文件读取为字符串
  • write — 将数据写入文件
  • create_dir 和 create_dir_all — 创建目录
  • remove_file 和 remove_dir — 删除文件和目录
  • metadata — 获取文件信息
  • copy 和 rename — 复制和重命名


在 Rust 中读取和写入文件

读取或写入文件的最简单方法是使用包装函数,这些函数一次调用即可完成所有工作。它们适用于可以完全放入内存的小文件。



完整读取文件

use std::fs;

fn main() -> Result<(), std::io::Error> { let content = fs::read_to_string("hello.txt")?; println!("文件内容:{}", content); Ok(())}

函数 read_to_string 返回 Result<String>。如果文件不存在或没有读取权限,将返回错误。请注意运算符 ? — 它会自动将错误向上传递。



写入文件

use std::fs;

fn main() -> Result<(), std::io::Error> { let data = "你好,Rust!"; fs::write("output.txt", data)?; println!("文件写入成功"); Ok(())}

函数 write 会覆盖文件(如果存在),或创建一个新文件。要向文件末尾追加数据,请使用 OpenOptions。



处理二进制文件

要读取和写入二进制数据,请使用带有字节向量的 read 和 write:

use std::fs;

fn main() -> Result<(), std::io::Error> { // 写入二进制数据 let bytes: Vec<u8> = vec![0, 1, 2, 3, 255]; fs::write("binary.dat", &bytes)?;

// 以字节形式读取 let read_bytes = fs::read("binary.dat")?; println!("已读取

博客

书籍推荐