【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情報等はここで確認しています。
コメント
コメントを投稿