iOS 使用ZipArchive压缩文件

jopen 11年前
   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;  }