如何获取声明为File变量的文件的大小/长度?
可以通过以下方式使用文件名来获取它fs::metadata:
let x = fs::metadata(file_path)?.len();
Run Code Online (Sandbox Code Playgroud)
但是我有一个已经创建和编辑的文件:
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();
Run Code Online (Sandbox Code Playgroud)
有没有给出长度的函数File?
有几个选项。
如果您像 ( File::create)那样创建文件,则会截断该文件,这意味着它将将该文件的大小设置为0并将其内容写入buffer该文件。这意味着您的文件现在将具有长度buffer.len().
使用File::metadata获得的元数据,并因此获得该文件的长度。请记住,您必须将文件(通过使用File::sync_all)与底层文件系统同步以更新元数据并获得正确的值。
使用Seek::seek哪个File实现。然后,您可以通过使用my_file.seek(SeekFrom::End(0))它来获取当前偏移量,这将告诉您最后一个可用位置。
每晚(预计发布 1.35.0),您可以使用Seek::stream_len,它与 不同seek(SeekFrom::End(0)),恢复先前的搜索位置。
在std::fs::File提供了一个metadata方法。它可以my_file像这样与您一起使用:
my_file.metadata().unwrap().len();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |