Высокоэффективные API файловой системы для определенных видов операций

Иногда мне нужны определенные API-интерфейсы файловой системы, которые могут быть реализованы очень эффективно, если они поддерживаются файловой системой, но я никогда о них не слышал. Например:

  • Усеченный файл с начала, на границе единицы размещения
  • Разделить файл на две части на границе единицы размещения
  • Вставьте или удалите фрагмент из середины файла, опять же, на границе единицы размещения

Единственный известный мне способ делать подобные вещи - переписывать данные в новый файл. Это имеет то преимущество, что единица выделения больше не актуальна, но чрезвычайно медленная по сравнению с некоторыми низкоуровневыми средствами файловой системы.

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

Действительно ли таких API не существует, или я просто не знаю о них? Я в основном интересуюсь NTFS, но интересны и другие файловые системы.

2 ответа

Решение

Раймонд Чен, по сути, ответил на этот вопрос.

Он отвечает, что нет, таких API не существует, потому что на них слишком мало спроса. Раймонд также предлагает использовать разреженные файлы и разбивать блоки, обнуляя их.

Для NTFS и FAT таких API нет. Вы можете обрезать конец файла, но не начало.

Реализация этого нецелесообразна из-за кэширования файловой системы. Большую часть времени люди реализуют слой "поверх" NTFS для поддержки этого.

Другие вопросы по тегам