Как изменить часть файла в zip архиве?

Пытаюсь найти способ, как после записи в файл внутри zip архива (в потоке), после окончания потока изменить в начале файла, после небольшого технического заголовка буквально два байта, отвечающие за количество двоичных строк.
Сразу скажу, что количество строк не всегда можно знать заранее :(
Пока что есть два варианта - записывать данные во временный файл или в память, а потом записывать в zip, но хотелось бы узнать, нет ли возможности обойтись без двойной записи и лишних затрат памяти)
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Возможно, но для этого надо вмешиваться как в процесс доступа к архиву, так и в процесс сжатия. Вот примерно так.
ZEXTERN int ZEXPORT deflateParams(z_streamp strm,
                                  int level,
                                  int strategy);

Штука в том, что ключевые байты надо держать несжатыми.

UPD. Если хотите, чтобы не нарушать NDA, я возьму что-то общедоступное вроде Zippy и попробую написать прототип. Но только если хотите.

UPD2. Блин, забыл про CRC! Его тоже придётся как-то пересчитывать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы