Неожиданно встала задача архивации/деархивации данных на 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-файл }
Я описал самый простой способ работы с архивом, так же есть возможность открывать запароленные архивы и создавать их.
Спасибо за внимание.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: