Метод sync_all
Метод sync_all синхронизирует все данные файла с диском,
включая метаданные, такие как размер файла и права доступа.
Метод не принимает параметров и возвращает результат типа
io::Result<()>. Если синхронизация прошла успешно,
возвращается Ok(()), в противном случае - ошибка
Err.
Этот метод полезен, когда нужно гарантировать, что все записанные данные действительно сохранены на физическом носителе, а не остаются в буферах операционной системы.
Синтаксис
file.sync_all()
Пример
Давайте создадим файл, запишем в него данные и синхронизируем их с диском:
use std::fs::File;
use std::io::Write;
fn main()
{
let mut file = File::create("test.txt").unwrap();
file.write_all(b"abcde").unwrap();
match file.sync_all()
{
Ok(()) => println!("sync_all succeeded"),
Err(e) => println!("sync_all failed: {}", e),
}
}
Результат выполнения кода:
"sync_all succeeded"
Пример
Давайте проверим работу sync_all после записи
в файл, открытый в режиме добавления:
use std::fs::OpenOptions;
use std::io::Write;
fn main()
{
let mut file = OpenOptions::new()
.append(true)
.create(true)
.open("test.txt")
.unwrap();
file.write_all(b"12345").unwrap();
file.sync_all().unwrap();
println!("data synchronized");
}
Результат выполнения кода:
"data synchronized"