Распаковать NSData без временного файла

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


person Vladimir    schedule 13.11.2009    source источник
comment
Почему вы не хотите использовать временный файл? В каком виде вам нужны несжатые данные? Это какие-то фактические заархивированные данные, которые у вас есть в NSData?   -  person Jean Regisser    schedule 13.11.2009
comment
У меня есть зашифрованный zip-файл. Я расшифровываю его в памяти в NSData, а затем хочу распаковать напрямую.   -  person Vladimir    schedule 13.11.2009
comment
Я когда-то написал именно то, что вам нужно (за исключением поддержки шифрования). Это было довольно легко и реализовано за несколько часов. К сожалению, у меня больше нет доступа к коду. Так почему бы вам не написать его с нуля (с использованием zlib)? ZIP-файл — это довольно простой формат файла.   -  person Codo    schedule 22.08.2010


Ответы (2)


В этот ответ на этот вопрос, я указываю вики CocoaDev категория в NSData, которая добавляет поддержку zip/unzip в этот класс. Это позволит вам сделать это полностью в памяти.

person Brad Larson    schedule 13.11.2009
comment
Эта категория добавляет поддержку gzip/zlib, а не фактический формат zip (который, кстати, не может быть распакован в один объект NSData, который не может представлять структуру файлов/каталогов). - person Jean Regisser; 13.11.2009

Насколько я понимаю, формат zip хранит файлы отдельно, и каждый сохраненный файл сжимается с использованием алгоритма сжатия (обычно это алгоритм DEFLATE).

Если вас интересует только распаковка данных, сжатых с использованием алгоритма DEFLATE, вы можете использовать этот дополнение zlib к NSData из Google Toolbox для Mac
Ему не нужны временные файлы.

person Jean Regisser    schedule 13.11.2009
comment
Поскольку файлы в zip-архивах хранятся индивидуально сжатыми и в их исходной иерархии папок, должна быть возможность извлечь объект NSData, просто передав путь (относительно корня zip-архива), верно? - person avocade; 08.06.2010