System.IO Файл Дата создания Поведение Поведение - PullRequest
0 голосов
/ 21 мая 2019

Я написал службу Windows, которая сравнивает большие несжатые изображения с их намного меньшими миниатюрами, чтобы определить, какие изображения нуждаются в новых миниатюрах или вообще не имеют миниатюр ... Я использую дату создания файлов, чтобы определить, какие из них требуютобновление (если несжатое изображение имеет дату создания, превышающую миниатюру, тогда миниатюра устарела).

Все работает отлично, моя единственная проблема - когда я сохраняю новые версии миниатюр поверх их существующих... Сначала я делал только простой Bitmap.Save, но при перезаписи это изменило бы только дату изменения файла.Я добавил в File.Delete() перед сохранением новой версии, и она удаляет старую версию, сохраняет новую (как и должно быть), но Дата создания нового файла все еще остается прежней датой создания ...

Я удалил все старые миниатюры, подождал несколько минут, а затем снова запустил код создания, новые даты создания ... Существуют ли временные рамки, когда Windows сохраняет данные файла в памяти и, возможно, распознает идентичные имена файлов и дает новыефайлы старые Дата создания ???

1 Ответ

1 голос
/ 21 мая 2019

В соответствии с документацией для метода File.SetCreationTime (String, DateTime) ,

Диски в формате NTFS могут кэшировать метаинформацию файла, например время создания файла, в течение короткого периода времени. В результате может возникнуть необходимость явно установить время создания файла, если вы перезаписываете или заменяете существующий файл.

Однако, если вы хотите быть осторожным, переименуйте исходный файл, скажем, поставив «.old» в конце. Таким образом, он должен будет создать новую запись каталога для нового файла. Затем, если что-то идет не так, как надо, все равно есть его старая копия (пока вы ее не удалите).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...