ios使用SARUnArchiveANY 解压rar文件(oc和swift版本)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
SARUnArchiveANY简介
开源库网址
https://github.com/saru2020/SARUnArchiveANY
简介
一个iOS的非常有用的库来解压zip.rar7z文件。
他是以下库的简单集成
- UnrarKit
- SSZipArchive
- LzmaSDKObjC (7z)
需要注意的是解压出来会被多套一层文件夹 “Extract rar”
使用SARUnArchiveANY解压文件
使用pod进行依赖在Podfile中加入并pod install:
pod 'SARUnArchiveANY'
解压一个带密码的压缩文件,oc版本
NSError *archiveError = nil;
//URKArchive用来判断是否要输入密码,filePath是要解压的文件路径
URKArchive *archive = [[URKArchive alloc] initWithPath:filePath error:&archiveError];
if (!archive) {
NSLog(@"Failed!");
return;
}
NSError *error = nil;
NSArray *filenames = [archive listFilenames:&error];
if ([archive isPasswordProtected]) {
NSLog(@"需要密码");
}
//下面是解压如果上面判断得到是需要密码则将密码配置进去(密码是多少要问用户)
SARUnArchiveANY *unarchive = [[SARUnArchiveANY alloc]initWithPath:filePath];
unarchive.password = @"";//用户输入密码
unarchive.destinationPath = destPath;//指定解压路径路径 会被多套一层文件夹 "Extract rar"。如果不指定会解压到原文件相同文件夹下
//解压成功回调返回参数是解压文件路径每一个文件如果下面还有文件夹 包含文件夹里面的
unarchive.completionBlock = ^(NSArray *filePaths){
NSLog(@"For Archive : %@",filePath);
for (NSString *filename in filePaths) {
NSLog(@"File: %@", filename);
}
};
//失败回调
unarchive.failureBlock = ^(){
};
[unarchive decompress];
解压一个带密码压缩文件swift版本
// 判断是否需要密码
do {
let archive = try URKArchive(path: path!)
let needPassword = archive.isPasswordProtected()
} catch {
print(" 失败")
return
}
// 下面开始解压
let unarchive = SARUnArchiveANY(path: path)
unarchive?.destinationPath = destPath //指定解压路径路径 会被多套一层文件夹 "Extract rar"。如果不指定会解压到原文件相同文件夹下
unarchive?.completionBlock = { arr in
// 打印解压文件路径
for str in arr! {
print("\(str)")
}
}
unarchive?.failureBlock = {
// 解压失败回调
}
unarchive?.password = "1111" // (上面判断是否需要密码需要密码的话是找用户要的)
unarchive?.decompress()