Потому что кажется, что для системы было бы более эффективно передавать записанные данные в память, а затем, когда они полностью записаны, передавать вещи обратно на диск.
В современных операционных системах доступ к файлам буферизуется. Ваша программа выполняет запись в часть памяти, которая поддерживается ОС, и когда эта область заполняется или когда вы закрываете файл, буфер записывается на диск. Таким образом, вы можете записать несколько гигабайт случайных данных в файл, если хотите, но при этом вы не расходуете столько памяти. В то же время дисковая подсистема может делать другие вещи, пока ваша программа записывает несколько байтов за раз.
В любом случае, как диск восстанавливает данные, независимо от того, записывает ли ваша программа непосредственно на диск или готовый файл копируется системой в различные места на диске?
Зависит от операционной системы и конкретной файловой системы. Часто данные записываются в новый файл на диске. Когда ваша программа закрывает файл, буфер очищается, и каталог обновляется, чтобы указывать на новый файл вместо старого, который впоследствии можно удалить. Это позволяет избежать повреждения данных в случае сбоя системы во время записи - изменение каталога в последний момент создает иллюзию "атомарных" записей.
Вы можете прочитать о журнализированных файловых системах и транзакционных файловых системах.
Другие стратегии также возможны. Целые учебники доступны по файловым системам и отказоустойчивости.
Наконец, иногда файловая система не может восстановить ваш файл. Иногда это не может восстановиться вообще. Стратегии, которые я упомянул выше, являются ответом на те проблемы, о которых вы спрашиваете, и, насколько я знаю, они довольно эффективны для поддержания диска в согласованном состоянии. Старые файловые системы были не так хороши в этом, и если вы потеряли питание только во время записи диска, файл или весь диск могли быть скомпрометированы. Раньше был большой рынок утилит для восстановления дисков, таких как Norton Disk Doctor. Этот рынок, похоже, ослаб с появлением более надежных реализаций ОС, но некоторые из этих продуктов все еще доступны.