如果文件不是std::io::File
和std::io::BufReader
的utf-8编码,是否可以逐行读取文件?
我看std::io::Lines
并返回Result<String>
,所以
我担心,我是否实施了自己的BufReader
同样的做法,但返回Vec<u8>
,或者我可以某种方式重用std::io::BufReader
?
答案 0 :(得分:3)
您不必重新实现BufReader
本身,它提供了您的用例所需的方法read_until
:
fn read_until(&mut self, byte: u8, buf: &mut Vec<u8>) -> Result<usize>
您提供自己的Vec<u8>
,文件内容将被追加,直到遇到byte
(0x0A为LF)。
有几个潜在的问题:
buf
。简单的while let Ok(_) = reader.read_until(0x0A as u8, buffer)
可让您轻松阅读文件。
您可以考虑实现一个std::io::Lines
等效项,它可以从编码转换为UTF-8,以提供一个不错的API,但它会产生性能成本。