iOS中解压rar文件

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];//存储
}

你可能感兴趣的:(iOS基础,iOS功能)