Как я могу проверить, полностью ли записан файл на диск? - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь реализовать безопасный метод замены файлов, который должен быть устойчивым к мгновенным сбоям, таким как сбои электропитания.Я знаю, что NTFS гарантирует, что переименования файлов являются атомарными, поэтому я просто записываю содержимое во временный файл перед тем, как переименовать его в «commit».

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

Насколько я знаю, NTFS не защищает содержимое, и Windows может отложить его написаниесколько угодно.Если переименование произойдет до того, как будет сделано содержимое, могут произойти плохие вещи.

...