iOS中基于UnrarKit解壓rar文件
iOS中解壓rar文件,使用UnrarKit框架解壓,框架github地址
使用pods導(dǎo)入框架之后會(huì)報(bào)錯(cuò)

報(bào)錯(cuò)內(nèi)容截圖
這是因?yàn)闆]有導(dǎo)入依賴框架libc++.bdt,導(dǎo)入之后編譯一下即可

導(dǎo)入依賴庫截圖
然后代碼中
/** 解壓 */
- (void)extract{
//獲取Document路徑
NSArray *documentsPathArr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [documentsPathArr lastObject];
//拼接上文件
NSString * fileString = [NSString stringWithFormat:@"Announcement/%@",self.rarFileName];
// 拼接要寫入文件的路徑
NSString *path = [documentsPath stringByAppendingPathComponent:fileString]; //文件路徑
NSError *archiveError = nil;
URKArchive *archive = [[URKArchive alloc] initWithPath:path error:&archiveError];
if (!archive) {
UIAlertController *controller = [UIAlertController alertControllerWithTitle:@"提示"
message:@"解壓失敗,請(qǐng)重試!"
preferredStyle:UIAlertControllerStyleAlert];
[controller addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
[self presentViewController:controller animated:YES completion:nil];
return;
}
NSError *error = nil;
NSArray *filenames = [archive listFilenames:&error];
if (error) {
[MBProgressHUD showError:@"解壓失敗"];
return;
}
for (NSString *filename in filenames) {
NSLog(@"File: %@", filename);//打印文件名稱
}
NSData *data = [archive extractDataFromFile:filenames[0] progress:nil error:&error];
if (error) {
[MBProgressHUD showError:@"解壓失敗"];
if (error.code == ERAR_MISSING_PASSWORD) {
}
}
if (data != nil) {
//解壓后的文件操作可以在這里進(jìn)行處理,比如保存或者顯示處理都可以
}
}
如果要保存文件,可以在
if (data != nil) {
//解壓后的文件操作可以在這里進(jìn)行處理,比如保存或者顯示處理都可以
// 獲取路徑
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
// 拼接文件路徑
NSString *path = [doc stringByAppendingPathComponent:[NSString stringWithFormat:@"AnnouncementData/%@",filenames[0]]];
[data writeToFile:path atomically:YES];//存儲(chǔ)
}