Rust:如何逐块读取文件

2023-12-31

我对生锈完全陌生。我想逐块/块读取文件(每个块应包含 16 个字节)并将其(对于此测试场景)写入另一个文件 f2。所以我首先在这里尝试使用以下代码:

let mut buf = [0;16];
let mut count = 0;

     for byte in f1.bytes() {

            if count  == 16 {
                do_smth(&mut f2, &mut buf);
                count = 0;
                let data = byte?;
                buf[count] = data;

            } else {
                let data = byte?;
                buf[count] = data;
                count +=1;
            }

    }

文件 f1 中的测试字节为:

0123456789abcdef-hello world, hello world!

文件 f2 中的结果是

0123456789abcdefhello world, hel

是否有一种高性能的方法可以在每次迭代时增加文件光标。 我阅读了有关查找功能的信息并对其进行了一些尝试,但没有找到解决方案。也许这可以通过每次交互增加文件光标来解决?


这是工作解决方案。

let mut buffer = [0; 16];
let mut count = 0;
while let Ok(n) = f1.read(&mut buffer[..]) {
    if n != 16 {
        let rest = &buffer[0..n];
        do_smth(&mut f2, &rest);
        break;
    } else {
        do_smth(&mut f2, &mut buffer);
        count += n;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rust:如何逐块读取文件 的相关文章

随机推荐