iOS 使用ZipArchive压缩文件

分享到:
   ZipArchive是一个开源的zip开发包工具。 使用方法如下:   创建/添加一个zip包

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;
}

昵    称:
验证码:

相关文档: