[

6月19日
-
2分钟阅读
[
拯救
如何在Rust中有效地逐行读取一个文本文件?

如何打开一个文件进行阅读?
在Rust中,对文件系统中一个开放文件的引用是由结构std::fs::File 来表示的。我们可以使用File::open 方法来打开一个现有的文件进行阅读。
pub fn open<P: AsRef<Path>>(path: P) -> Result<File>
该方法以一个路径(任何可以借用&Path ,即AsRef<Path> ,确切地说)为参数,并返回一个io::Result<File> 。
如何有效地逐行读取一个文件?
为了提高效率,读取器可以是缓冲的,这意味着它们有一大块内存(缓冲区),在内存中保存一些输入数据。这就节省了系统调用。在Rust中,BufRead 是Read 的一种类型,它有一个内部缓冲区,允许它执行额外的读取方式。注意,File 不是自动缓冲的,因为File 只实现了Read ,而没有实现BufRead 。然而,为File 创建一个缓冲的阅读器是很容易的。
BufReader::new(file);
最后,我们可以使用std::io::BufRead::lines() 方法来返回这个缓冲阅读器的行的迭代器。
BufReader::new(file).lines();
把所有东西放在一起
现在我们可以很容易地写一个函数,有效地逐行读取一个文本文件。
use std::fs::File;use std::io::{self, BufRead, BufReader, Lines};use std::path::Path;
提高编码水平
感谢你成为我们社区的一员!更多的内容在Level Up Coding出版物中。
关注。Twitter,LinkedIn,Newsletter
Level Up正在改变科技招聘的方式 ➡️ 加入我们的人才集体