利用Cocopods 添加第三方类库: ZipArchive
压缩:
1. 根据文件管理器创建压缩对象zip;
NSFileManager *manager = [NSFileManager defaultManager];
ZipArchive *zip = [[ZipArchivealloc] initWithFileManager:manager];
2. 根据zip创建压缩包,并存入指定路径;
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/1.zip"];
BOOL isOK =NO;
isOK = [zip CreateZipFile2:pathPassword:@"123"];//每次都会创建一个新的压缩包并打开文件
NSLog(@"创建%@",isOK?@"成功":@"失败");
3. 往压缩包里添加数据;
NSString *fileDirectPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/images”];//获取数据路径;
NSDirectoryEnumerator *enu = [managerenumeratorAtPath:fileDirectPath];//文件管理器遍历该路径的数据,并返回数据集合;
for (NSString *strin enu.allObjects) {//遍历enu,得到每个数据的存储路径;
NSString *imgPath = [fileDirectPathstringByAppendingPathComponent:str];//拼接路径,并添加到压缩包zip;
isOK = [zip addFileToZip:imgPathnewname:str];
NSLog(@"添加%@",isOK?@"成功":@"失败");
}
4.添加完数据,关闭压缩包
isOK = [zip CloseZipFile2];
NSLog(@"关闭%@",isOK?@"成功":@"失败");
解压缩:
1.根据路径和密码打开压缩文件
isOK = [zip UnzipOpenFile:pathPassword:@"123"];
NSLog(@"打开%@",isOK?@"成功":@"失败");
2.获取解压缩的进度以及文件个数
NSString *newPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/1"];
zip.progressBlock = ^(int percentage, int filesProcessed, unsigned long numFiles){
NSLog(@"%@--%@--%@",@(percentage),@(filesProcessed),@(numFiles));
};
3.解压缩文件
isOK = [zip UnzipFileTo:newPathoverWrite:YES];
NSLog(@"解压缩%@",isOK?@"成功":@"失败");
4.关闭压缩文件
[zip UnzipCloseFile];