Неправильная дата создания файла в Windows XP / Vista


7

Проверь это:

  1. Создайте новый файл на вашем компьютере с Windows.
  2. Обратите внимание на дату и время его создания.
  3. Удалить файл.
  4. Подожди немного.
  5. Создайте новый файл в том же каталоге с тем же именем, что и предыдущий.
  6. Дата и время создания нового файла будут такими же, как и у предыдущего!

Я проверил это на Windows XP SP3 и Windows Vista SP2 x64. Мне трудно поверить, что это ошибка. Это действительно ошибка с ОС? Если нет, то почему это поведение? Это трудное время, так как я использую дату / время создания файла, чтобы отслеживать циклы резервного копирования в пользовательском приложении, которое мы разрабатываем.

Благодарю.

Ответы:


8

Похоже, это документированная функция, называемая туннелированием файловой системы. См. Http://support.microsoft.com/kb/172190 для получения подробной информации об этом и о том, как отключить его с помощью параметра реестра.


7

Я не верю, что это ошибка, я думаю, что это по замыслу. Я столкнулся с этим несколько месяцев назад сам.

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

В приведенном выше случае, каждый раз, когда вы сохраняете файл, дата его создания всегда будет соответствовать последнему измененному!

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

Обновление: я нашел следующее от авторов xxcopy по адресу http://www.xxcopy.com/xxcopy15.htm , которое может относиться к тому, что вы делаете:

Поскольку использование даты создания файла имеет серьезные проблемы, мы обычно не рекомендуем использовать эту дату

Проблемы с датой создания файла (File-Create date),

Проблемы даты создания файла могут быть связаны с несоответствием в различных утилитах управления файлами Microsoft. Похоже, что цель трех разных
вариантов значений даты файла никогда не была четко определена разработчиком функции. Мы, как разработчики программного обеспечения, не сталкивались с официальными документами на эту тему.


2

Я предполагаю, что Windows ленива и - увидев, что все остальное в новом файле идентично старому - просто повторно использует запись в таблице файловой системы, которая ранее была помечена для удаления.

Такое поведение на самом деле задокументировано здесь .

Метки времени обновляются в разное время и по разным причинам. Единственная гарантия относительно временной метки файла - это то, что время файла корректно отражается, когда дескриптор, который делает изменение, закрыт.

(Мой акцент)

Изменить, чтобы добавить: я думаю, вы захотите использовать что-то вроде SetFileTime в вашем приложении после создания файла.


Спасибо Использование SetFileTime - хорошее решение, да.
CesarGon

2

Я нашел это с Win32 DeleteFile на Windows 7 SP1.

Попробовал несколько хитростей, чтобы заставить его использовать правильную «созданную» дату, но без радости. Если вы подождете 2-3 минуты после удаления файла, а затем создадите новый, дата будет правильной. Вероятно, нужна процедура очистки всех файлов win32.

Это может привести к неприятным ошибкам, на мой взгляд, довольно сомнительная вещь, неопрятный дизайн. Файл был удален, пропал, не должно быть таких «ореолов». Если вы беспокоитесь, предложите использовать win32 SetFileTime.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.