filerustseek

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