iOS 使用ZipArchive压缩文件
ZipArchive* zipFile = [[ZipArchive alloc] init];
//次数得zipfilename需要一个完整得路径,例如***/Documents/demo.zip
[zipFile CreateZipFile2:@"zipfilename"];
//有两种可选得方式进行创建压缩包,带密码和不带密码的
[[zipFile CreateZipFile2:@"zipfilename" Password:@"your password"];
//接下来就是将需要压缩的文件添加到这个压缩包中
//这里第一个参数需要完整的路径,例如:***/Documents/a.txt newname是指文件在压缩包中的名字,不需要路径,只是一个名称
[zipFile addFileToZip:@"fullpath of the file" newname:@"new name of the file without path"];
//如果需要将多个文件进行压缩,即压缩文件夹,重复addFileToZip方法即可
[zipFile CloseZipFile2];
[zipFile release];
//释放内存
解压zip包:
ZipArchive* zipFile = [[ZipArchive alloc] init];
[zipFile UnzipOpenFile:@"zip file name"];
//同样,对应的就有两种打开zip包的方式,带密码和不带密码
[zipFile UnzipOpenFile:@"zip file name" Password:@"password" ];
//压缩包释放到的位置,需要一个完整路径
[zipFile UnzipFileTo:@"output path" overwrite:YES];
[zipFile UnzipCloseFile];
[zipFile release];
//记得释放
ZipArchive下载地址:https://code.google.com/p/ziparchive/
代码:+(NSString *)zipFiles:(NSArray *)paramFiles { //生成zip文件名字 NSString * zipFileName = [[CUtils generateRndString] stringByAppendingPathExtension:@"zip"]; //取得zip文件全路径 NSString * zipPath = [[CUtils documentPath] stringByAppendingPathComponent:zipFileName]; //判断文件是否存在,如果存在则删除文件 NSFileManager * fileManager = [NSFileManager defaultManager]; @try { if([fileManager fileExistsAtPath:zipPath]) { if(![fileManager removeItemAtPath:zipPath error:nil]) { CCLog(@"Delete zip file failure."); } } } @catch (NSException * exception) { CCLog(@"%@",exception); } //判断需要压缩的文件是否为空 if(paramFiles == nil || [paramFiles count] == 0) { CCLog(@"The files want zip is nil."); return nil; } //实例化并创建zip文件 ZipArchive * zipArchive = [[ZipArchive alloc] init]; [zipArchive CreateZipFile2:zipPath]; //遍历文件 for(NSString * fileName in paramFiles) { NSString * filePath = [[CUtils documentPath] stringByAppendingPathComponent:fileName]; if([fileManager fileExistsAtPath:filePath]) { //添加文件到压缩文件 [zipArchive addFileToZip:filePath newname:fileName]; } } //关闭文件 if([zipArchive CloseZipFile2]) { CCLog(@"Create zip file success."); [zipArchive release]; return zipPath; } [zipArchive release]; return nil; }