При записи файлов данные поступают в кэш обратной записи ОС.Когда ОС неожиданно дает сбой (отключение питания, синий экран, уничтожение виртуальной машины), данные теряются.Типичным симптомом является то, что файл имеет правильный размер, но заполнен нулями.(Возможно, размер также может быть неправильным, я не знаю.)
В общем, идея записи в новый файл, а затем замены новых и старых файлов является хорошей стратегией.Но вам также необходимо сбросить данные на диск.
FileStream.Flush()
и StreamWriter.Flush()
.Скорее всего, вы должны добавить f.Flush();
.