Извлечение zip-файла из zip-архива без загрузки всего файла в память - PullRequest
4 голосов
/ 11 марта 2011

Есть ли способ извлечь отдельный файл из zip-файла в Adobe AIR?

Я использую библиотеку NoChumps для извлечения файлов из архива. В этой библиотеке весь IDataStream загружается в память, и после этого вы можете легко извлечь записи файла. В случаях, когда размер почтового индекса составляет от 5 до 10 МБ, проблем нет. Но когда размер zip составляет 80 МБ, а многие из них, 80 МБ загружается в память. Это приводит к сбою приложения и его медленной работе на мобильных устройствах. Согласно спецификации почтового индекса,

"ZIP-файл идентифицируется по наличию центрального каталога, расположенного в конце файла, это позволяет добавлять новые файлы. В каталоге хранится список имен записей (файлов или каталогов), хранящихся в ZIP-файл, а также другие метаданные о записи и смещение в ZIP-файле, указывающее на фактические данные записи. "

Кроме того, я не могу контролировать размер zip-файлов, но в большинстве случаев это от 60 до 100 МБ. Файлы внутри ~ 4 МБ.

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

Это не возможно для Flex, но возможно для AIR.AIR получил класс File с произвольным доступом, который позволяет читать список zip-файлов.Я использовал airxzip от Coltware , и он мне хорошо помог.Создайте ZipFileReader, откройте ваш zip-файл, позвоните getEntries(), найдите нужную запись и позвоните reader.unzip(entry).

1 голос
/ 11 марта 2011

Быстрый ответ - нет, это невозможно.

Длинный ответ - вам нужно создать дополнительную программу, использующую библиотеку, например zLib, и установить ее на машину также

...