ZipArchive解凍zipファイル

1850 ワード

ZipArchiveはオープンソースコード「MiniZip」のzip圧縮と解凍のObjective-Cのクラスに基づいています.http://code.google.com/p/ziparchive/ZipArchive.zipをダウンロードし、解凍後にコードをプロジェクトに追加し、libz.dylibライブラリをプロジェクトに追加します.
注意:ダウンロードのオープンソースコードはMRCコードで、ARCとMRCを混ぜ合わせるときは-fno-objc-arcを配置します.
使用方法:
  • 圧縮:ZipArchiveは複数のファイルを圧縮できます.ファイルaddFileToZipだけで
  • ができます.
    ZipArchive* zip = [[ZipArchive alloc] init];    
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    
    NSString *documentpath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;    
    NSString* l_zipfile = [documentpath stringByAppendingString:@"/test.zip"] ;    
                  
    NSString* image1 = [documentpath stringByAppendingString:@"/image1.jpg"] ;       
    NSString* image2 = [documentpath stringByAppendingString:@"/image2.jpg"] ;           
                  
    BOOL ret = [zip CreateZipFile2:l_zipfile];    
    ret = [zip addFileToZip:image1 newname:@"image1.jpg"];    
    ret = [zip addFileToZip:image2 newname:@"image2.jpg"];    
    if( ![zip CloseZipFile2] )    
      {    
         l_zipfile = @"";    
      }    
    [zip release];  
    
  • 解凍:
  • ZipArchive* zip = [[ZipArchive alloc] init];    
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    
    NSString *documentpath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;    
                  
    NSString* l_zipfile = [documentpath stringByAppendingString:@"/test.zip"] ;    
    NSString* unzipto = [documentpath stringByAppendingString:@"/test"] ;    
    if( [zip UnzipOpenFile:l_zipfile] )    
     {    
       BOOL ret = [zip UnzipFileTo:unzipto overWrite:YES];    
       if( NO==ret )    
       {    
       }    
       [zip UnzipCloseFile];    
     }    
    [zip release];