Crossplatform File::write_at()?

69 Views Asked by 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.
1

There are 1 best solutions below

0
John Kugelman On BEST ANSWER

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