Rust 文件与 IO:查账秘籍
Rust 标准库提供了 std::fs 模块来处理文件系统操作。
📖 读取整个文件
最简单的方法是一次性把文件读成字符串。
use std::fs;
fn main() {
// 可能会失败,所以返回 Result
let content = fs::read_to_string("account_book.txt")
.expect("读不出来啊!");
println!("账本内容:\n{}", content);
}
✍️ 写入文件
创建一个新文件并写入数据。
use std::fs::File;
use std::io::Write;
fn main() {
let mut file = File::create("verdict.txt").unwrap();
file.write_all(b"Guilty!").unwrap();
}
🕵️ 逐行读取 (BufReader)
如果账本太厚(文件太大),不要一次读完,要用缓冲区逐行读。
use std::fs::File;
use std::io::{BufRead, BufReader};
fn main() {
let file = File::open("account_book.txt").unwrap();
let reader = BufReader::new(file);
for line in reader.lines() {
println!("{}", line.unwrap());
}
}
🔓 OpenOptions (高级打开方式)
File::open 只读,File::create 只写且覆盖。如果你想玩点花样(比如追加、读写同时),就要用 OpenOptions。
use std::fs::OpenOptions;
fn main() {
let file = OpenOptions::new()
.read(true) // 允许读取
.write(true) // 允许写入
.create(true) // 如果文件不存在就创建
.append(true) // 追加模式 (不会覆盖原内容)
// .truncate(true) // 清空文件 (慎用!)
.open("log.txt");
}
常用选项:
read(true): 打开读权限。write(true): 打开写权限。append(true): 指针移到文件末尾,用于追加。create(true): 文件不存在时创建新文件。create_new(true): 文件必须不存在,否则报错(防止覆盖)。