[swift]iOS開發:使用rar解壓庫Unrar4iOS遇到的那些坑,另附上自己的一個簡易版的本地沙盒文件瀏覽器 – iPhone手機開發 iPhone軟體開發教學課程

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

演示:

Demo地址:https://github.com/Franzeyang/FileManager

發佈留言