「Java」 マジックバイト(最初の4バイト)でzipファイルを判定するサンプル
最初の4バイト
50 4b 03 04
Javaコード
package com.arkgame.study.file;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class ZipFileHannten {
public static int SIZE = 4;
//マジックバイトの配列の定義
public static byte zipByte[] = { 'P', 'K', (byte) 0x03, (byte) 0x04 };
public static void main(String[] args)
throws IOException {
String strFile = "c:\\data\\test01.zip";
boolean isFlg = chkZipFile(strFile);
System.out.println("指定ファイルがzipファイルか: "+isFlg);
}
@SuppressWarnings("resource")
public static boolean chkZipFile(String strFile)
throws FileNotFoundException,IOException {
boolean result = true;
InputStream ist = null;
ist = new FileInputStream(strFile);
byte[] cft = new byte[SIZE];
ist.read(cft);
System.out.println("byte配列の要素:");
for (byte bb : cft) {
System.out.println(bb);
}
//マジックバイト判定
for (int i = 0; i < zipByte.length; i++) {
if (cft[i] != zipByte[i]) {
result = false;
}
}
return result;
}
}
実行結果
byte配列の要素:
80
75
3
4
指定ファイルがzipファイルか: true