因为项目有这样的需求,查了一下相关的内容。ios中要想实现这个功能,主要需要用到ZipArchive这个开源的第三方库。
一 压缩
1.需要压缩的zip文件的路径。
<div style="text-align: left;"><span style="font-size:14px;"><span style="font-family:FangSong_GB2312;"> NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);</span></span></div><span style="font-family:FangSong_GB2312;font-size:14px;"></span><div style="text-align: left;"> NSString *docDir = [paths objectAtIndex:0];</div><div style="text-align: left;"> NSString *zipFile = [docDir stringByAppendingPathComponent:@"video.zip"];</div>
2.创建压缩文件
<div style="text-align: left;"><span style="font-size:14px;"><span style="font-family:FangSong_GB2312;"> ZipArchive *za = [[ZipArchive alloc] init];</span></span></div><span style="font-family:FangSong_GB2312;font-size:14px;"></span><div style="text-align: left;"> [za CreateZipFile2:zipFile];</div>
3.添加你需要压缩的文件
<div style="text-align: left;"><span style="font-size:14px;"><span style="font-family:FangSong_GB2312;"> //audio.amr</span></span></div><span style="font-family:FangSong_GB2312;font-size:14px;"></span><div style="text-align: left;"> NSString *audioPath = [docDir stringByAppendingPathComponent:@"audio.amr"];</div><div style="text-align: left;"> [za addFileToZip:audioPath newname:@"audio.amr"];</div>
4.把压缩文件写到磁盘
BOOL success = [za CloseZipFile2];
需要注意的是,要是压缩文件夹的话,应该这样处理
<span style="font-size:18px;"> NSString *fileName=[NSString stringWithFormat:@"resources/%@",[contents objectAtIndex:i]];
[za addFileToZip:filePath newname:fileName];
</span>
二 解压缩
1获取要解压缩的zip包的路径
NSString *zipPath = [[NSBundle mainBundle]pathForResource:@"video" ofType:@"zip"];
2要解压到的路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docspath = [paths objectAtIndex:0];
3解压缩
if ([za UnzipOpenFile: zipPath])
{
BOOL ret = [za UnzipFileTo: docspath overWrite: YES];
if (NO == ret)
{
}
[za UnzipCloseFile];
}