「Java」 マジックバイト(最初の4バイト)でzipファイルを判定するサンプル

2020年11月10日

最初の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

Java

Posted by arkgame