let mut file = std::fs::File::open(listpath).unwrap();
let mut buffer: [u8; 1024000] = [0; 1024000];
// let mut buffer: [u8; 16] = [0; 16];
let mut rtime = 0;
while rtime < 10 {
let mut size = file.read(&mut buffer).unwrap();
println!("{:02x?}",buffer);
rtime = rtime + 1;
}
}
结果就是被大量00填充了
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
1
共 12 条评论, 1 页
评论区
写评论哈哈没注意缓冲区字节数不够 导致后面的字节是老的 现在解决了
--
👇
zhylmzr: 你用同一个缓冲区数组在循环中接受文件的读取,每一次循环都会覆盖掉上一次读取的内容
解决了 原来是我没注意buffer后面的数据没有被清空或者填充,最后引用固定的切片可破
你用同一个缓冲区数组在循环中接受文件的读取,每一次循环都会覆盖掉上一次读取的内容
谢谢 只能看元数据获取文件大小了
--
👇
uno: https://doc.rust-lang.org/std/fs/struct.Metadata.html#method.len
https://doc.rust-lang.org/std/fs/struct.Metadata.html#method.len
这是运行过程 可以发现最后复制了
而生成的文件最后也是不一样的 这是原文件的最后
生成的文件最后
复制字节了
--
👇
Pikachu: 请认真阅读官方文档。 https://doc.rust-lang.org/src/std/io/mod.rs.html#632
简单摘要一下:如果read返回的size是0,说明要么到达文件末尾,要么作为参数的buf长度为0。
我试了下不能用0来判断 代码如下
--
👇
tokyohuang123: 谢谢。我去看看
--
👇
Pikachu: 请认真阅读官方文档。 https://doc.rust-lang.org/src/std/io/mod.rs.html#632
简单摘要一下:如果read返回的size是0,说明要么到达文件末尾,要么作为参数的buf长度为0。
文件就是返回0就是结尾,你好奇自己看看read_to_end的实现不就好了
--
👇
tokyohuang123: 它好像说这个判断方法是不能保证到末尾的
--
👇
Pikachu: 请认真阅读官方文档。 https://doc.rust-lang.org/src/std/io/mod.rs.html#632
简单摘要一下:如果read返回的size是0,说明要么到达文件末尾,要么作为参数的buf长度为0。
它好像说这个判断方法是不能保证到末尾的
--
👇
Pikachu: 请认真阅读官方文档。 https://doc.rust-lang.org/src/std/io/mod.rs.html#632
简单摘要一下:如果read返回的size是0,说明要么到达文件末尾,要么作为参数的buf长度为0。
谢谢。我去看看
--
👇
Pikachu: 请认真阅读官方文档。 https://doc.rust-lang.org/src/std/io/mod.rs.html#632
简单摘要一下:如果read返回的size是0,说明要么到达文件末尾,要么作为参数的buf长度为0。
请认真阅读官方文档。 https://doc.rust-lang.org/src/std/io/mod.rs.html#632
简单摘要一下:如果read返回的size是0,说明要么到达文件末尾,要么作为参数的buf长度为0。
ps:不使用read_to_end的话