Я пытаюсь реализовать безопасный метод замены файлов, который должен быть устойчивым к мгновенным сбоям, таким как сбои электропитания.Я знаю, что NTFS гарантирует, что переименования файлов являются атомарными, поэтому я просто записываю содержимое во временный файл перед тем, как переименовать его в «commit».
Единственный компонент, который мне не хватает: как мне убедиться, что содержимоефайла были полностью записаны на диск?Я не пишу файл (я получаю только имя файла), поэтому я не могу использовать FileStream.Flush(true)
.
Насколько я знаю, NTFS не защищает содержимое, и Windows может отложить его написаниесколько угодно.Если переименование произойдет до того, как будет сделано содержимое, могут произойти плохие вещи.