Я нашел пару библиотек (LiteZip и ZipArchive), которые позволяют распаковывать файлы на iPhone. Но оба они требуют ввода в виде файла. Есть ли библиотека, которая позволяет напрямую распаковывать NSData, содержащие данные в zip-архиве, без записи во временный файл?
Я пытался использовать упомянутые выше библиотеки для этого, но пока безуспешно.
Распаковать NSData без временного файла
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
Эта категория добавляет поддержку 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
Поскольку файлы в zip-архивах хранятся индивидуально сжатыми и в их исходной иерархии папок, должна быть возможность извлечь объект NSData, просто передав путь (относительно корня zip-архива), верно?
- person avocade; 08.06.2010