gpt4 book ai didi

rust - 逐行读取文件(不是utf-8)?

转载 作者:行者123 更新时间:2023-11-29 08:14:12 29 4
gpt4 key购买 nike

如果文件不是使用 std::io::File 的 utf-8 编码,是否可以逐行读取文件?和 std::io::BufReader

我看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)。

有几个潜在的问题:

  • 缓冲区不仅可以以 LF 字节结束,还可以以 CR LF 序列结束,
  • 由你来清除buf在随后的通话之间。

一个简单的while let Ok(_) = reader.read_until(0x0A as u8, buffer)应该让您足够轻松地阅读您的文件。

您可以考虑实现 std::io::Lines从编码转换为 UTF-8 以提供良好的 API 的等价物,尽管它会产生性能成本。

关于rust - 逐行读取文件(不是utf-8)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48034486/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com