如果文件不是带有 和 的 utf-8 编码,是否可以逐行读取std::io::File文件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>
Run Code Online (Sandbox Code Playgroud)
您提供自己的Vec<u8>文件内容,文件的内容将被附加,直到byte遇到(0x0A 是 LF)。
有几个潜在的问题:
buf在后续调用之间进行清除。一个简单的while let Ok(_) = reader.read_until(0x0A as u8, buffer)应该让您足够轻松地阅读您的文件。
您可以考虑实现一个std::io::Lines等效的方法,将编码转换为 UTF-8 以提供一个很好的 API,尽管它会带来性能成本。
| 归档时间: |
|
| 查看次数: |
2659 次 |
| 最近记录: |