我对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函数,用它做了一点实验,但没有找到解决办法。也许可以用每次迭代递增文件游标的方法来解决这个问题?
这是工作解决方案。
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;
}
}