iOS-解壓zip

最近的項(xiàng)目中涉及到了將zip文件從服務(wù)上下載下來章鲤,然后解壓使用税产。搜索了一下發(fā)現(xiàn)有一個(gè)壓縮與解壓zip文件的第三方“SSZipArchive”:https://github.com/ZipArchive/ZipArchive 是用C語(yǔ)言實(shí)現(xiàn)的怕轿,包裝用于OC與swift.

一、在使用過程中遇到過幾個(gè)坑:
  1. 導(dǎo)入頭文件沖突撞羽,我在pch文件里面導(dǎo)入了一些OC的頭文件阐斜,而SSZipArchive是由C語(yǔ)言實(shí)現(xiàn)的诀紊,所以報(bào)了很多的系統(tǒng)錯(cuò)誤。解決辦法:將pch里面的導(dǎo)入頭文件代碼放在
    "#ifdef OBJC
    //導(dǎo)入頭文件
    "#endif 里面"
    或者刪除里面導(dǎo)入頭文件的代碼邻奠,去具體需要的文件里面導(dǎo)入,有一點(diǎn)暴力哈碌宴。
  2. 我每一次下載的文件樣式都是一樣的杀狡,所以希望覆蓋式的解壓,一開始沒有注意以為它只有解壓方法:+ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination;
    就自己去判定是否存在然后刪除贰镣,后來去仔細(xì)的看源碼才發(fā)現(xiàn)它是有帶是否覆蓋式解壓的方法:+ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination overwrite:(BOOL)overwrite password:(NSString *)password error:(NSError * *)error;
    當(dāng)然它還有很多方法呜象,包括帶有代理方法,帶有密碼八孝,帶有完成后的block回調(diào)方法董朝,
    http://blog.csdn.net/zhengang007/article/details/51019479
    這里有每一個(gè)方法的詳細(xì)說明。
二干跛、我的實(shí)現(xiàn):
- (void)downFileFromServer{
//遠(yuǎn)程地址
NSURL *URL = [NSURL URLWithString:DOWN_URL];
//默認(rèn)配置
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
//AFN3.0+基于封住URLSession的句柄
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
//請(qǐng)求
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
//下載Task操作
_downloadTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
// 下載進(jìn)度
} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
//- block的返回值, 要求返回一個(gè)URL, 返回的這個(gè)URL就是文件的位置的路徑
NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *path = [cachesPath stringByAppendingPathComponent:response.suggestedFilename];
return [NSURL fileURLWithPath:path];
} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
//設(shè)置下載完成操作
// filePath就是你下載文件的位置子姜,你可以解壓,也可以直接拿來使用
NSString *imgFilePath = [filePath path];// 將NSURL轉(zhuǎn)成NSString
MyLog(@"imgFilePath = %@",imgFilePath);
NSArray *documentArray =  NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [[documentArray lastObject] stringByAppendingPathComponent:@"Preferences"];
[self releaseZipFilesWithUnzipFileAtPath:imgFilePath Destination:path];
}];
[_downloadTask resume];
}
// 解壓
- (void)releaseZipFilesWithUnzipFileAtPath:(NSString *)zipPath Destination:(NSString *)unzipPath{
NSError *error;
if ([SSZipArchive unzipFileAtPath:zipPath toDestination:unzipPath overwrite:YES password:nil error:&error delegate:self]) {
MyLog(@"success");
MyLog(@"unzipPath = %@",unzipPath);
}else {
MyLog(@"%@",error);
}
}
#pragma mark - SSZipArchiveDelegate
- (void)zipArchiveWillUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo {
MyLog(@"將要解壓楼入。");
}
- (void)zipArchiveDidUnzipArchiveAtPath:(NSString *)path zipInfo:(unz_global_info)zipInfo unzippedPath:(NSString *)unzippedPat uniqueId:(NSString *)uniqueId {
MyLog(@"解壓完成哥捕!");
}

當(dāng)然還得遵守協(xié)議:SSZipArchiveDelegate
以上就是我使用SSZipArchive的體會(huì),歡迎各位指正嘉熊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末遥赚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子阐肤,更是在濱河造成了極大的恐慌凫佛,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孕惜,死亡現(xiàn)場(chǎng)離奇詭異愧薛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)衫画,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門毫炉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人削罩,你說我怎么就攤上這事瞄勾》鸭椋” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵进陡,是天一觀的道長(zhǎng)愿阐。 經(jīng)常有香客問我,道長(zhǎng)四濒,這世上最難降的妖魔是什么换况? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮盗蟆,結(jié)果婚禮上戈二,老公的妹妹穿的比我還像新娘。我一直安慰自己喳资,他們只是感情好觉吭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仆邓,像睡著了一般鲜滩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上节值,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音搞疗,去河邊找鬼。 笑死匿乃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泄隔。 我是一名探鬼主播宛徊,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼巷燥!你這毒婦竟也來了号枕?” 一聲冷哼從身側(cè)響起陨享,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赞厕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體皿桑,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诲侮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刮便。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绽慈。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖搜贤,靈堂內(nèi)的尸體忽然破棺而出钝凶,到底是詐尸還是另有隱情,我是刑警寧澤腿椎,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布啃炸,位于F島的核電站,受9級(jí)特大地震影響膀钠,放射性物質(zhì)發(fā)生泄漏肿嘲。R本人自食惡果不足惜筑公,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一匣屡、第九天 我趴在偏房一處隱蔽的房頂上張望拇涤。 院中可真熱鬧誉结,春花似錦、人聲如沸惩坑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扼脐。三九已至奋刽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肚吏,已是汗流浹背狭魂。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斋泄,地道東北人镐牺。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像募胃,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痹束,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容