读取文件通过线(未UTF-8)行?(read file(not utf-8) lin

2019-09-29 04:45发布

是否有可能读取线文件中的行,如果不是以UTF-8编码用std::io::Filestd::io::BufReader

我看std::io::Lines并返回Result<String> ,所以我担心,我有没有实现自己的BufReader做同样的,但返回Vec<u8>代替,或者我可以重复使用std::io::BufReader以某种方式?

Answer 1:

你不必重新实现BufReader本身,它到底提供了你需要为你的用例方法read_until

fn read_until(&mut self, byte: u8, buf: &mut Vec<u8>) -> Result<usize>

你提供你自己的Vec<u8>和文件的内容将被追加到byte遇到字符(0x0A是LF)。

有几个潜在的陷阱:

  • 缓冲器可以结束不仅与LF字节,但具有CR LF序列,
  • 它是由你来清除buf后续调用之间。

一个简单while let Ok(_) = reader.read_until(0x0A as u8, buffer)应该让你读你的文件很轻松了。

您可以考虑实施std::io::Lines相当于从编码转换为UTF-8提供了一个很好的API,但它会产生性能成本。



文章来源: read file(not utf-8) line by line?
标签: rust