Неожиданно встала задача архивации/деархивации данных на iOS. После непродолжительных поисков нашел довольно простое и требующее минимальных телодвижений, которым и хочу с вами поделиться. Очень буду рад если вы в комментах расскажете про другие методы работы с ZIP-архивами.

— Качаем исходники отсюда.

— Закидываем в свой проект.

— И, обязательно, подключаем к проекту бинарник libz.dylib .

Все готово, если вы посмотрите в файлик ZipArcihve.h то увидите все методы для работы с архивами через этот класс:

@interface ZipArchive: NSObject{
// методы для создания/ добавления файлов к архиву
-(BOOL) CreateZipFile2:(NSString*) zipFile;
-(BOOL) CreateZipFile2:(NSString*) zipFile Password:(NSString*) password;
-(BOOL) addFileToZip:(NSString*) file newname:(NSString*) newname;
-(BOOL) CloseZipFile2;

// методы разархивации
-(BOOL) UnzipOpenFile:(NSString*) zipFile;
-(BOOL) UnzipOpenFile:(NSString*) zipFile Password:(NSString*) password;
-(BOOL) UnzipFileTo:(NSString*) path overWrite:(BOOL) overwrite;
-(BOOL) UnzipCloseFile;
}

Самый простой пример создания архива:

ZipArchive* zipArchive = [[ZipArchive alloc ]init];
if([zipArchive CreateZipFile2:@"/Users/tatty/archive.zip"]){ // создаем zip архив
            [zipArchive addFileToZip:@"/Users/tatty/archive.zip" newname:@"university.db"]; // первый параметр - путь к архиву к которому добавляем, а второй имя файла который хотим добавить
            [zipArchive CloseZipFile2]; // закрываем архив и сохраняем
        }

И простой пример извлечения заархивированных данных:

ZipArchive* zipArchive = [[ZipArchive alloc ]init];

if([zipArchive UnzipOpenFile:@"path_to_ZIP_file"]){ // сначала принимается ZIP-архив по указанному пути [zipArchive UnzipFileTo:@"path_to_folder" overWrite:YES]; // потом происходит разархивация и сохранение файлов по указанному пути [zipArchive UnzipCloseFile]; // освобождаем ZIP-файл }

Я описал самый простой способ работы с архивом, так же есть возможность открывать запароленные архивы и создавать их.

Спасибо за внимание.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *