Есть ли простой способ обрезать файл? - PullRequest
0 голосов
/ 04 октября 2011

У меня большой файл (обычно более 1 ГБ) в следующем формате:

[ информация заголовка , 128 байт] [ содержимое , 1 ГБ]

Мой вопрос: есть ли простой способ обрезать информацию заголовка без необходимости читать часть содержимого и снова сохранять на диск?Я имею в виду, что мне просто нужно изменить существующий файл и удалить часть заголовка.

Обновление:

Заголовок находится в начале файла

Ответы [ 3 ]

4 голосов
/ 04 октября 2011

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

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

1 голос
/ 04 октября 2011

С точки зрения файловой системы, содержимое файла - это просто последовательность блоков. В то время как файловая система обычно допускает некоторую «слабость» (то есть неиспользуемое пространство) в последнем блоке (чтобы приспособить размер файла, который не кратен размеру блока), файловая система просто не сконструирована так, чтобы допускать slack в первом блоке. Другими словами, содержимое файла должно начинаться с начала первого блока.

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

1 голос
/ 04 октября 2011

Краткий ответ: нет, нет. Каждый бит содержимого должен быть перемещен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...