1

В Windows 8.0 кажется, что при изменении атрибута файла (например, H и R) метки времени (Создано, Изменено, Доступно) остаются прежними.

Хранятся ли атрибуты файла в файловой системе NTFS, а не в самом файле? Разве метки времени не должны меняться, если вы меняете атрибуты файла? Разве это не считается изменением файла? Если я не ошибаюсь, метки времени также хранятся в файловой системе NTFS, а не в самом файле.

Это также касается файловой системы FAT32 и предыдущих версий Windows?

2 ответа2

2

Windows NT с самого начала поддерживала как подсистему Win32, так и подсистему POSIX. И в Win32, и в POSIX файлы имеют три отметки времени. Две из этих временных меток являются общими для Win32 и POSIX. В Win32 файлы имеют метки времени создания, последней записи и последнего доступа . POSIX имеет метки времени последнего изменения, последнего доступа и изменения I-узла .

Windows NT и NTFS для поддержки Win32 и POSIX предоставляют файлам четыре временные метки: «Создание», «Последняя запись / изменение», «Последний доступ» и «Последнее изменение».

В POSIX временная метка Измененного I-узла отражает время, когда что-то в I-узле - разрешения, владелец, группа и т.д. - изменяется. Windows NT устанавливает временную метку, даже если изменяемая вещь изменяется с Win32, поскольку (конечно) обе подсистемы имеют многоуровневую структуру по отношению к собственному API, когда речь идет о файлах.

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

Он не меняет отметку времени последней записи, поскольку на нее влияют только изменения данных файла. Это изменения метаданных файла в записи I-узла /MFT, которые влияют на метку времени последнего изменения.

Каждая файловая система в Windows NT должна предоставлять эти четыре метки времени ядру. Это API, который должны реализовывать драйверы файловой системы.

Но не все файловые системы фактически определяют их в структурах данных на диске или определяют с той же степенью детализации, что и ядро Windows NT. Например, формат файловой системы FAT изначально имел только одну временную метку для каждого файла: свою метку времени последней записи. Драйвер файловой системы FAT в Windows NT и драйвер файловой системы FAT в DOS+Windows 95/98/ME использовали ранее запасные поля в записях каталога для хранения большего количества временных меток. Но не было места для всех четырех. На диске нет отметки времени последнего изменения; отметка времени последнего доступа имеет гранулярность 1 день; а отметки времени последней записи и создания имеют степень детализации 2 секунды.

0

Дата последнего изменения относится к дате последнего написания. Когда атрибуты изменены, они не влияют на данные, которые вы сохранили в файле, и поэтому последнее изменение остается неизменным.

Дата создания по определению является постоянной. Последний доступ непредсказуем.

Однако есть еще одна отметка времени (невидимая в Проводнике), которая называется MFT. Когда вы меняете какое-либо свойство / атрибут, MFT, конечно, меняется.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .