Rust 文件读取
最后修改于 2025 年 2 月 19 日
在本文中,我们将介绍如何在 Rust 中读取文件。
Rust 有几种读取文件的方法,包括使用 std::fs::File 和 std::io::Read trait。
read_to_string 函数
read_to_string 函数将整个文件读取到一个 String 中。
main.rs
use std::fs::File;
use std::io::Read;
fn main() {
let filename = "words.txt";
let mut file = match File::open(filename) {
Ok(file) => file,
Err(err) => panic!("Could not open file: {}", err),
};
let mut contents = String::new();
match file.read_to_string(&mut contents) {
Ok(_) => println!("File contents: {}", contents),
Err(err) => panic!("Could not read file: {}", err),
}
}
在此示例中,我们使用 File::open 函数打开一个名为 words.txt 的文件,并使用 read_to_string 函数将其内容读取到一个字符串中。
使用 BufReader
在 Rust 中读取文件的另一种方法是使用 std::io 模块中的 BufReader 类型。
main.rs
use std::fs::File;
use std::io::{BufRead, BufReader};
fn main() {
let filename = "words.txt";
let file = match File::open(filename) {
Ok(file) => file,
Err(err) => panic!("Could not open file: {}", err),
};
let reader = BufReader::new(file);
for line in reader.lines() {
match line {
Ok(line) => println!("{}", line),
Err(err) => panic!("Could not read line: {}", err),
}
}
}
在此示例中,我们打开一个文件并创建一个 BufReader 实例,以便逐行读取文件。
read_to_end 函数
read_to_end 函数将读取源中直到 EOF 的所有字节,并将它们放入一个缓冲区。
main.rs
use std::fs::File;
use std::io::{self, Read};
fn main() -> io::Result<()> {
let filename = "words.txt";
let mut f = File::open(filename)?;
let mut buffer = Vec::new();
f.read_to_end(&mut buffer)?;
let content = String::from_utf8_lossy(&buffer);
println!("{}", content);
Ok(())
}
在此示例中,我们定义一个缓冲区,并使用 read_to_end 将整个文件读取到缓冲区中。之后,我们将缓冲区转换为字符串并打印到控制台。
let mut buffer = Vec::new();
我们定义一个缓冲区。
f.read_to_end(&mut buffer)?;
我们将整个文件读取到一个缓冲区中。
let content = String::from_utf8_lossy(&buffer);
我们将缓冲区转换为字符串。
在本文中,我们介绍了 Rust 文件读取的基础知识。我们演示了如何使用 std::fs::File 和 std::io::Read trait 打开和读取文件,以及如何处理过程中可能发生的错误。
作者
列出 所有 Rust 教程。