Rust。如何逐块读取文件

问题描述 投票:1回答:1

我对rust完全陌生。我想通过blockChunks读取一个文件块(每个文件块应该包含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

有没有一种性能好的方法可以让文件光标每次迭代都递增.我读了一下seek函数,用它做了一点实验,但没有找到解决办法。也许可以用每次迭代递增文件游标的方法来解决这个问题?

file input rust byte block
1个回答
0
投票

这是工作解决方案。

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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.