欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-06-24 20:54:23
[swift]ios开发:使用rar解压库unrar4ios遇到的那些坑,另附上自己的一个简易版的本地沙盒文件,学校的一个项目因为需要添加解压rar文件功能,所以在网上找了下关于这方面的第三库,找了...

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

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..

演示:

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

demo地址:https://github.com/franzeyang/filemanager