iOS中基于UnrarKit
解压rar文件
iOS中解压rar文件,使用UnrarKit
框架解压,框架github地址
使用pods导入框架之后会报错
这是因为没有导入依赖框架libc++.bdt
,导入之后编译一下即可
然后代码中
/** 解压 */
- (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:@"解压失败,请重试!"
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) {
//解压后的文件操作可以在这里进行处理,比如保存或者显示处理都可以
}
}
如果要保存文件,可以在
if (data != nil) {
//解压后的文件操作可以在这里进行处理,比如保存或者显示处理都可以
// 获取路径
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
// 拼接文件路径
NSString *path = [doc stringByAppendingPathComponent:[NSString stringWithFormat:@"AnnouncementData/%@",filenames[0]]];
[data writeToFile:path atomically:YES];//存储
}