iOS压缩文件与解压缩文件

使用第三方框架ZipArchive进行压缩与解压,cocoapod:pod 'ZipArchive'

1.压缩

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 = @"";

    }

2.解压缩

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

    }

乱码处理问题

里面是一些带特殊符号的文件, 使用zipArchive解压后会出现乱码。

解决方法是到ZipArchive.mm文件中找到

NSString * strPath = [NSString 

stringWithCString:filename];

换成UTF8方式解压, 如下:

NSString * strPath = [NSString 

stringWithUTF8String:filename];

但是有时后中文也会有问题, 用如下方式:

NSStringEncoding enc =

CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

NSString * strPath = [NSString 

stringWithCString:filename encoding:enc];

你可能感兴趣的:(iOS压缩文件与解压缩文件)