Почему Windows устанавливает “созданное время нового созданного файла” свойство на старое время?

Функции

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

В результате вы вызываете printf с 3 аргументами, где последние 2 имеют одинаковый указатель на один и тот же буфер с одинаковым содержимым.

7
задан 3 revs, 3 users 75% 14 November 2016 в 06:35
поделиться

2 ответа

Это происходит из-за туннелирования файловой системы, как объяснил Raymond Chen:

"Почему туннелирование существует вообще?

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

Как другой пример важности туннелирования, полагайте, что файл "Файл с длинным name.txt", краткое название которого, говорит "FILEWI~1.TXT". Вы загружаете этот файл в программу, которая не осведомлена о длинном имени файла, и сохраните его. Это удаляет старый "FILEWI~1.TXT" и создает новый с тем же именем. Без туннелирования было бы потеряно связанное длинное название файла. Вместо дружественного длинного имени имя файла было повреждено в эту вещь с волнистыми метками. Не хороший."

25
ответ дан 6 December 2019 в 07:08
поделиться

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

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

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

0
ответ дан 6 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: