Цитата maxo:
Это не так - существующий файл не удаляется, а только "захватывается", блокируется, записывается новый и только если запись прошла удачно, удаляется уже старый файл (из ФАТ-а), т. е. при перезаписи информация нового файла никак не может попасть на месте старого файла. »
|
Вы ошибаетесь. Если бы это было так, то в каталоге в один и тот же момент времени присутствовало 2 файла с одинаковым именем ("захваченный" и вновь записываемый). Данные не могут записываться в никуда, сначала создается запись о файле в таблице расположения файлов.
Как это работает на самом деле, можно проверить с помощью утилиты мониторинга файловых операций
FileMon.exe.
При перезаписи файла используется функция "Create" (колонка Request) с опциями Overwriteelf Sequential. При выполнении Create, если файл уже существует, его длина устанавливается в ноль, а указатель данных - на свободную область раздела. После Create выполняется функция "Set Information" и длина нового файла устанавливается равной длине копируемого. И только после этого выполняется само копирование данных последовательностью функций READ для копируемого и WRITE для нового файла.