Файл сжатия - PullRequest
       37

Файл сжатия

0 голосов
/ 03 июня 2010

У меня есть файл X байтов. И я хочу, например, сжать его в блок размером 32Kb. Есть ли библиотека, в которой я могу это сделать?

Я использовал Zlib для Delphi, но я просто могу сжать полный файл в новый сжатый файл.

много шутит, Pedro

1 Ответ

1 голос
/ 24 декабря 2011

Почему бы вам не использовать простой заголовок для определения границ блоков? Учтите это:

  1. Считать фиксированный объем данных из ввода в буфер (скажем, 32 КиБ)
  2. Сжатие этого буфера с помощью «недавно созданного» потока дефляции (базовый алгоритм сжатия ZLIB).
  3. Запись сжатого размера в выходной поток
  4. Запись сжатых данных в выходной поток
  5. Переходите к шагу 1, пока не достигнете конца файла.

Плюсы:

  1. Вы можете распаковать любой блок даже в многопоточном режиме.
  2. Повреждение данных ограничено только поврежденным блоком. Остальные данные можно восстановить.

Минусы:

  1. Вы теряете большую часть контекстной информации (сходство между данными). Таким образом, у вас будет более низкая степень сжатия.
  2. Вам нужно немного больше работы.
...