ios使用SARUnArchiveANY 解压rar文件(oc和swift版本)

SARUnArchiveANY简介

开源库网址:
https://github.com/saru2020/SARUnArchiveANY
简介:
一个iOS的非常有用的库来解压zip,.rar,7z文件。
他是以下库的简单集成:

  • UnrarKit
  • SSZipArchive
  • LzmaSDKObjC (7z)
    这个库有个问题,依赖SSZipArchive版本非常低
    需要注意的是解压出来会被多套一层文件夹 “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()

猜你喜欢

转载自blog.csdn.net/htwhtw123/article/details/128948602
今日推荐