如何获得声明为File
变量的文件的大小/长度?
可以通过fs::metadata
使用文件名获取它:
let x = fs::metadata(file_path)?.len();
但我有一个我已经创建和编辑的文件:
let mut my_file = File::create(file_path).unwrap();
my_file.write_all(buffer) // buffer is a data which comes from network and put into Vec<u8>
// From here, does it possible to get my_file length?
// Looking something like my_file.len();
有没有给出File
长度的函数?
有几个选择。
File::create
),则会截断文件,这意味着它会将该文件的大小设置为0
并将buffer
的内容写入文件。这意味着您的文件现在将具有buffer.len()
的长度。File::metadata
获取元数据,从而获得文件的长度。请记住,您必须将文件(通过使用File::sync_all
)与基础文件系统同步,以更新元数据并获取正确的值。Seek::seek
实施的File
。然后,您可以使用my_file.seek(SeekFrom::End(0))
获取当前偏移量,该值将告诉您可用的最后位置。Seek::stream_len
,与seek(SeekFrom::End(0))
不同,它恢复之前的搜索位置。std::fs::File
提供metadata
方法。它可以与你的my_file
一起使用,如下所示:
my_file.metadata().unwrap().len()