Распаковка потока данных gzip в Objective-C

Есть ли простой стандартный способ распаковать буфер необработанных данных gzip в Objective-C? Я не смог найти ничего полезного в документации Apple Developer.

Если нет, можете ли вы указать мне код, библиотеку, что-нибудь, что облегчит мою жизнь? Я не боюсь писать код на C.


person Thaddee Tyl    schedule 24.08.2011    source источник


Ответы (2)


На сайте Cocoadev доступна категория NSData, которая может обрабатывать данные zlib и gzip: http://www.cocoadev.com/index.pl?NSDataCategory

Если вам просто нужна распаковка gzip, вы можете удалить методы, связанные с zlib и хэшем.
Не забудьте добавить ссылку на этап сборки libz.dylib (стандартная библиотека OS X).

Обновление
Как указал marcos1490 в комментариях, исходная запись CocoaDev исчезла, но кто-то расширил эту категорию NSData и написал об этом: http://deusty.blogspot.de/2007/07/gzip-compressiondecompression.html

person Thomas Zoechling    schedule 24.08.2011
comment
URL больше недействителен. - person marcos1490; 30.01.2014
comment
Новый URL-адрес deusty также больше недействителен. Более настойчивый вариант будет здесь: github.com/nicklockwood/GZIP. Однако ни один из этих отвечайте на заголовок вопроса - я искал настоящий поток, но все они работают только с NSData и не предназначены для больших файлов, которые можно читать фрагментами из файла. Настоящий пример решения для потоковой передачи находится здесь: developer.apple.com/documentation/accelerate/ - person Thomas Tempelmann; 18.07.2020

Вы можете попробовать Ziparchive для распаковки. Я пробовал сжимать файлы с его помощью, надеюсь, что другой будет работать отлично.

Вот фрагмент кода

ZipArchive *zip = [ZipArchive alloc];
[zip UnzipOpenFile:Zip-File-Path];
[zip UnzipFileTo:Unzip-Folder-Path overWrite:As-You-Wish];

Также включите libz.dylib на этапе сборки.

person illuminatus    schedule 24.08.2011