是否有可能逐行读取文件,如果它不是使用std::io::File
和std::io::BufReader
的utf-8编码?
我看看std::io::Lines
并且它返回Result<String>
,所以我担心,我是否实现了我自己的BufReader
做同样的,但返回Vec<u8>
,或者我可以以某种方式重用std::io::BufReader
?
您不必重新实现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,虽然它会有性能成本。