[swift]iOS开发:使用rar解压库Unrar4iOS遇到的那些坑,另附上自己的一个简易版的本地沙盒文件浏览器

学校的一个项目因为需要添加解压rar文件功能,所以在网上找了下关于这方面的第三库,找了很长时间只发现了一个三年前的解压库 Unrar4iOS ,我相信用过的人一定都会有段痛苦的经历,先不说安装这个库就有一堆坑,里面的好几个重要的方法都用不了,而且解压得到的文件名还是乱码,折腾了很长时间在网上找了各种方法才完美解决问题。第三库可以直接从我的工程文件里拷贝出来不会有什么问题,而且完美支持64位;乱码部分我给String拓展了一个方法:

extension String{
    func latinToGBTEncoding()->String{
        let GBTEnc = CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(CFStringEncodings.GB_18030_2000.rawValue))
        let data = self.data(using: .isoLatin1)
        return String(data: data!, encoding: String.Encoding(rawValue: GBTEnc))!
    }
}

至于解压后路径的创建问题我也给这个库拓展了一个方法unRarByFranze(filePath:String,filename:String),需要传入解压文件的名字以及路径:

extension Unrar4iOS{
    
    func unRarByFranze(filePath:String,filename:String){
        let directoryPath = filePath.replacingOccurrences(of: ".rar", with: "/")//先去掉".rar"后缀方便我们创建一个同名文件夹放置解压得到的文件
        //判断该文件夹是否存在,存在就创建一个
        if !FileManager.default.fileExists(atPath: directoryPath){
            try? FileManager.default.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil)//创建文件夹
            //先判断是否解压成功
            if self.unrarOpenFile(filePath){
                let files = self.unrarListFiles()//解压得到一个包含所有文件名的数组
                for i in 0..

演示:

QQ20170611-211552.gif

Demo地址: https://github.com/Franzeyang/FileManager
原作地址: https://github.com/ararog/Unrar4iOS

你可能感兴趣的:([swift]iOS开发:使用rar解压库Unrar4iOS遇到的那些坑,另附上自己的一个简易版的本地沙盒文件浏览器)