Как найти позицию центрального каталога в Zip-файле?

Я пытаюсь найти позицию первого заголовка файла центрального каталога в Zip-файле.

Я читаю это: http://en.wikipedia.org/wiki/Zip_ (формат_файла ) http://www.pkware.com/documents/casestudies/APPNOTE.TXT

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

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

Насколько я понимаю, цель центрального каталога - перечислить метаданные файла и положение фактических данных в Zip-файле, чтобы вам не нужно было сканировать весь файл?

После прочтения о конце центрального каталога запись, Википедия говорит:

Такой порядок позволяет создать zip-файл за один проход, но это обычно распаковывается, сначала читая центральный каталог на конец.

Как мне легко найти запись End of Central Directory? Нам нужно помнить, что там может быть комментарий произвольного размера, поэтому я могу не знать, сколько байтов от конца потока данных он находится. Я просто отсканирую это?

P.S. Пишу читалку Zip файлов.

10
задан Tower 21 December 2011 в 17:41
поделиться