How to get the size of an already-opened File in Rust?

The std::fs::File provides a metadata method. It can be used with your my_file like this:

my_file.metadata().unwrap().len();

There are a few options.

  1. If you create the file like you did (File::create), you will truncate the file, which means it will set the size of that file to 0 and write the content of buffer to the file. This means that your file will now have the length buffer.len().

  2. Use File::metadata to get the metadata and therefore get the length of the file. Keep in mind that you have to sync the file (by using File::sync_all) with the underlying filesystem to update the metadata and get the correct value.

  3. Use Seek::seek which File implements. You can then get the current offset by using my_file.seek(SeekFrom::End(0)) which will tell you the last position available.

  4. On nightly (expected for release 1.35.0), you can use Seek::stream_len, which, unlike seek(SeekFrom::End(0)), restores the previous seek position.

Tags:

File

Rust