Файл может быть описан как контейнер, состоящий из одного, нескольких или нескольких символов с фиксированным порядком;это очень похоже на char *
в оперативной памяти, но на диске (мертвая память).То, как файл фактически (физически) размещен на оборудовании, зависит от раздела.Хотя было бы технически возможно выполнить удаление определенных символов без перезаписи файла, это все равно было бы неэффективно из-за размера блока и всего.
Некоторые приемы , используемые базами данныхи другое программное обеспечение для удаления данных без «закрытия разрыва данных» должны
- использовать отдельные файлы для каждой строки
- Pro : удаление и вставка строклегко сделать
- Con : удаление и вставка строк означает переименование файлов (например,
RENUM
в GW-BASIC), если каждый файл не знает, что он предыдущий и следующий файл .... Но в целом это плохой подход .
- эмулировать FS внутри файла, где каждая строка является виртуальным файлом (с заголовком, размером и т. д.)
- Pro : работает так же, как связанный список для добавления и удаления строк
- Con : много работыдля простых текстовых данных ....
- и т. д.
Tздесь не так много, что можно сделать иначе.Есть много опций, которые можно использовать для «оптимизации» манипулирования данными вместо использования плоского файла.Это не падает на ОС или FS, чтобы решить эту проблему.В большинстве случаев, когда плоский файл достаточно хорош, переписывание части файла для удаления некоторых данных является приемлемым решением.