Я думал, что вы просто открываете файл и ищете позицию, которую хотите перезаписать, и начинаете запись, но кажется, что она добавляет только байты в этой позиции.Как удалить байты из файла или перезаписать байты?
Пример:
use std::fs::OpenOptions;
use std::io::{prelude::*, Seek, SeekFrom};
fn main() {
let mut file = OpenOptions::new()
.read(true)
.append(true)
.create(true)
.open("/tmp/file.db")
.unwrap();
let bytes: [u8; 4] = [1, 2, 3, 4];
file.seek(SeekFrom::Start(0)).unwrap();
file.write_all(&bytes).unwrap();
}
Выходной файл до:
00000000: 0102 0304 0a .....
Выходной файл после:
00000000: 0102 0304 0102 0304 0a .........
Как видите, поиск 0 не перезаписывает 4 байта, уже находящихся в файле.Вместо этого он добавляет их к файлу.