iOS  数据压缩与解压


Hi,推荐文件给你 "数据压缩与解压.zip"


http://vdisk.weibo.com/s/Gbabp



本文中需要的第三库在本文的代码例子中可以下载。minizipZipArchive这两个第三库



ViewController.h代码如下:


#import 
#import "ZipArchive.h"
@interface ViewController : UIViewController
-(IBAction)compress:(id)sender;
-(IBAction)unAr:(id)sender;
@end



ViewController.m代码如下:

自己拖2个Button与如下两个方法相关联


//这方法中数据压缩的方法:

-(IBAction)compress:(id)sender
{
    //导入ZipArchive包之后要加入libz.1.2.5.dylib的库
    ZipArchive* zip = [[ZipArchive alloc] init];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentpath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
    NSString* zipfilePath = [documentpath stringByAppendingString:@"/dj.zip"] ;
    //
    NSLog(@"%@",zipfilePath);
                     
                     
    NSString* p_w_picpath1 = [[NSBundle mainBundle] pathForResource:@"xiaonan" ofType:@"jpg"];
    NSString* p_w_picpath2 = [[NSBundle mainBundle] pathForResource:@"xiaonan" ofType:@"jpg"];
                     
                     
    //创建压缩包
    BOOL ret = [zip CreateZipFile2:zipfilePath];
    //向压缩包内加入数据
    ret = [zip addFileToZip:p_w_picpath1 newname:@"xiaonan.jpg"];
    ret = [zip addFileToZip:p_w_picpath2 newname:@"p_w_picpath2.jpg"];
    //关闭压缩包
    [zip CloseZipFile2];
                     
                     
    [zip release];
}




//数据解压的方法


-(IBAction)unAr:(id)sender
{
        
    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:@"/dj.zip"] ;
    NSString* unzipto = [documentpath stringByAppendingString:@"/dj"] ;
         
         
    //找到需要解压文件的路径
    if( [zip UnzipOpenFile:l_zipfile] )
    {
        BOOL ret = [zip UnzipFileTo:unzipto overWrite:YES];
        if( NO==ret )
        {
        }
        //完成解压
        [zip UnzipCloseFile];
    } 
    [zip release];
}