📜  在 rust bufreader 中读取文件 - Rust (1)

📅  最后修改于: 2023-12-03 15:23:18.656000             🧑  作者: Mango

在 Rust BufReader 中读取文件

Rust 为文件操作提供了许多便捷的方法。其中 BufReader 类型可以以缓存的方式读取文件。本文将介绍如何使用 BufReader 类型读取文件。

打开文件

在 Rust 中,可以使用 fs::File::open() 函数来打开一个文件。该函数接受一个文件路径作为参数,并返回一个 Result<File> 对象,其中包含打开的文件句柄。

use std::fs::File;

fn main() -> std::io::Result<()> {
    let file = File::open("file.txt")?;
    Ok(())
}

上述代码中的 File::open() 函数使用了 ? 操作符,这可以简化错误处理。如果打开文件时发生错误,将直接返回该错误,并结束程序。

读取文件

一旦打开了文件,就可以使用 std::io::BufReader 类型读取文件内容。BufReader 可以在内存中生成一个缓存区,以便快速读取文件内容。

use std::fs::File;
use std::io::{BufReader, BufRead};

fn main() -> std::io::Result<()> {
    let file = File::open("file.txt")?;
    let reader = BufReader::new(file);

    for line in reader.lines() {
        println!("{}", line?);
    }

    Ok(())
}

上述代码中的 BufReader::new() 函数创建了一个 BufReader 实例,并将打开的文件句柄作为参数传入。之后,使用 reader.lines() 来遍历文件内容。

同时,上述代码中的 ? 操作符用于简化错误处理。如果读取文件时发生错误,将直接返回该错误,并结束程序。

完整代码
use std::fs::File;
use std::io::{BufReader, BufRead};

fn main() -> std::io::Result<()> {
    let file = File::open("file.txt")?;
    let reader = BufReader::new(file);

    for line in reader.lines() {
        println!("{}", line?);
    }

    Ok(())
}
总结

使用 Rust 中的 BufReader 类型可以快速读取文件。在使用过程中,需要注意错误处理,特别是使用 ? 操作符可以大大简化代码。