面试题答案
一键面试实现思路
- 使用
BufReader
提升读取性能:BufReader
会在内存中创建一个缓冲区,减少系统调用次数,从而提高读取效率。 - 错误处理:使用
Result
类型来优雅地处理可能出现的I/O错误。Result
类型可以让我们在代码中清晰地处理成功和失败两种情况。
关键代码片段
use std::fs::File;
use std::io::{BufRead, BufReader, Error, Result};
fn process_data() -> Result<()> {
let file = File::open("large_data_file.txt")?;
let reader = BufReader::new(file);
for line in reader.lines() {
let line = line?;
// 这里进行数据处理,假设处理函数为process_line
process_line(&line)?;
}
Ok(())
}
fn process_line(line: &str) -> Result<()> {
// 具体的数据处理逻辑
// 如果出现错误,返回Err(Error::new(ErrorKind::Other, "自定义错误信息"))
Ok(())
}
在上述代码中:
File::open
尝试打开文件,如果失败,?
操作符会将错误返回给调用者。BufReader::new
将文件包装成带缓冲的读取器。reader.lines()
逐行读取文件内容,line
是一个Result<String>
,同样使用?
操作符处理读取错误。process_line
函数进行具体的数据处理,如果处理过程中出现错误,也返回Result
类型。