发布于2026-07-16 阅读(0)
扫一扫,手机访问
在 Rust 里搞文件操作,其实比你想象的要直接。标准库里的 std::fs 模块基本覆盖了日常所需的各种场景——创建、读写、删除、重命名,甚至目录管理,一条龙安排。下面咱们就逐个过一遍核心操作,代码和思路都摆在这儿,直接拿去用就行。

File::create 可以快速新建一个文件。如果文件已存在,它会直接覆盖原来的内容。配合 writeln! 写入一行数据,异常处理交给 ? 操作符向上传递。use std::fs::File;
use std::io::{self, Write};
fn main() -> io::Result<()> {
let mut file = File::create("foo.txt")?;
writeln!(file, "Hello, world!")?;
Ok(())
}
File::open 用于读取已存在的文件。将内容读到字符串变量里,然后打印出来。注意路径必须正确,否则会报错。use std::fs::File;
use std::io::{self, Read};
fn main() -> io::Result<()> {
let mut file = File::open("foo.txt")?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;
println!("File contents: {}", contents);
Ok(())
}
OpenOptions 并设置 append(true),就可以在不覆盖已有内容的情况下追加新数据。use std::fs::OpenOptions;
use std::io::{self, Write};
fn main() -> io::Result<()> {
let mut file = OpenOptions::new().append(true).open("foo.txt")?;
writeln!(file, "Another line!")?;
Ok(())
}
read_to_end 把内容读到 Vec 里。use std::fs::File;
use std::io::{self, Read};
fn main() -> io::Result<()> {
let mut file = File::open("foo.txt")?;
let mut contents = Vec::new();
file.read_to_end(&mut contents)?;
println!("File contents: {:?}", contents);
Ok(())
}
fs::remove_file 直接移除指定路径的文件。注意如果文件不存在或权限不足,会返回错误。use std::fs;
fn main() -> std::io::Result<()> {
fs::remove_file("foo.txt")?;
Ok(())
}
fs::rename 负责更名,也可以用来移动文件(只要目标路径在同一个文件系统内)。use std::fs;
fn main() -> std::io::Result<()> {
fs::rename("foo.txt", "bar.txt")?;
Ok(())
}
fs::create_dir 用来新建一个文件夹。如果需要递归创建多级目录,可以用 create_dir_all。use std::fs;
fn main() -> std::io::Result<()> {
fs::create_dir("my_new_directory")?;
Ok(())
}
fs::remove_dir 只能删除空目录。如果目录非空,会返回错误;要递归删除整个目录树,得用 remove_dir_all(注意危险操作)。use std::fs;
fn main() -> std::io::Result<()> {
fs::remove_dir("my_new_directory")?;
Ok(())
}
上面所有代码都大量使用了 ? 操作符——这是 Rust 在错误处理上最实用的语法糖。一旦某个操作抛出异常,它会直接将错误返回给调用者,省去你写一大堆 match 的麻烦。当然,生产环境里你可能还需要更细致的错误分类和恢复逻辑,但作为基础入门,这套写法足够干净。
另外,Rust 的 std::path::Path 和 std::path::PathBuf 专门用来处理路径拼接、解析等操作,而 std::env 模块可以获取环境变量、当前工作目录等信息,这些在更复杂的文件场景下会经常用到。
最后提醒一句:无论创建、修改还是删除,务必确认你对目标文件或目录拥有足够的权限。否则 Rust 编译器再优秀,也帮不了你绕过操作系统的权限限制。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8