Crossplatform File::write_at()?

I’m trying to write to a file but starting from a certain position. I’ve tried to use write_at() but it doesn’t work.

  1. The file is overwritten anyway, so what’s the point?
  2. It’s a UNIX-only API, and I would like to let people use my program on for example Windows and macOS.

>Solution :

The cross-platform solution is a two-step process: seek, then write. Note that this moves the file cursor, unlike write_at.

let mut file = OpenOptions::new().write(true).open("example.txt")?;
file.seek(SeekFrom::Start(1234))?;
file.write_all(b"foobar")?;

Playground

Leave a Reply