Какой самый быстрый способ получить доступ к файлам в zip-файле?

#c #indexing #zip #gzip #zipfile

#c #индексирование #gzip #zip

Вопрос:

Какой самый быстрый способ считывать отдельные файлы (случайным образом) из zip-файла?

Насколько я понимаю, у zip-файлов есть каталог, в котором хранятся отдельные записи файла, и я мог бы просканировать этот каталог для создания внешнего индекса. Существуют ли какие-либо стандартизированные способы (т. Е. Существующие библиотеки), которые уже делают это? Или я мог бы использовать специализированный тип zip-файла?

Ответ №1:

Сканирование каталога и построение индекса — это самый быстрый и наилучший способ обеспечить произвольный доступ к сжатым записям, заархивированным в zip-файле. Каталог обычно небольшой и находится в конце архива. Если у вас есть доступные для поиска носители, то это то, что вам нужно.

Формат zip документирован довольно хорошо; это не слишком сложно сделать. Однако дьявол кроется в деталях. Если ваши zip-файлы используют расширения ZIP64, шифрование, разделенные архивы.. вот когда это становится сложнее. Для простых zip-файлов делать то, что вы себе представляете, не так уж сложно.

Все же было бы проще использовать внешнюю библиотеку.

Ответ №2:

Minizip, похоже, является хорошей библиотекой для чтения или записи zip-файлов. Он использует библиотеку zlib.

http://www.winimage.com/zLibDll/minizip.html