使用第三方框架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];