БД в основном использует концепцию журнала (по крайней мере, ту, о которой я знаю). Идея состоит в том, что операция записи записывается в журнал до тех пор, пока Writer
не совершит транзакцию. (Конечно, это просто базовое описание, это так просто)
В вашем случае это может быть копия вашего файла, в которую вы собираетесь записать данные, и , если все закончилось успешно , заменить исходный файл его копией.
Подстановка: переименовать исходный файл как old
, переименовать файл резервной копии как original
.
Если замена не удалась: это критическая ошибка, которую приложение должно обрабатывать с помощью стратегий отказоустойчивости. Возможно, он проинформировал пользователя о неудачной операции сохранения и попытался восстановить. Кстати, в любой момент у вас есть обе копии вашего файла. Тот, когда операция записи только началась, и тот, когда операция записи завершилась.
Это методы, которые мы использовали в предыдущих проектах на VS IDE, подобных системам для промышленного управления, с довольно хорошим успехом.