【Swift】Zipファイル判定

SwiftでZIP判定用です。

もっとスマートなやり方は有ると思いますが暫定で作成です。

よく見かける物を関数にしたもの。


・ファイルを読み込む。

・先頭4byteを取得

・ZIPのheaderをcheckしてZIPのheaderならtrue を返す



    /// ZIP 判定

    /// - Parameter path: ファイルのパス

    /// - Returns: true  is zip

    func checkZIP(path: URL) -> Bool{

        

        guard let data = try? Data(contentsOf: path ) else {

            //ファイルの読み込み失敗

            

            abort()

        }

        // 先頭から4バイトを抽出。

        let headerData = data.subdata(in: 0..<4)

        //  進数変換

        let headerArray = headerData.map{String(format: "%02X", $0)}

        //ZIP header 504B0304

        guard (headerArray[0] == "50" && headerArray[1] == "4B" && headerArray[2] == "03" && headerArray[3] == "04" ) else {

            // ZIP じゃない

            return false

        }

        return true

    }  



利用は自己責任でお願いします。



header情報等はここで確認しています。


https://ja.wikipedia.org/wiki/ZIP_(%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88)

コメント

このブログの人気の投稿

【iOS】Swiftでtransformから角度、ラジアン、ディグリー、スケールを求める

【android】 Webviewのコントローラー(ピンチイン・ピンチアウトのボタン)を消す

【android】PdfDocumentとPdfRenderer を利用しPDFの作成と表示 (java)