01.JAVA/Java2008. 8. 19. 16:50
반응형

File이 어떤 포맷인지 알아보자


public String getFileType (File file) {
        InputStream inputStream = null;
        byte[] buf = new byte[132];
        try {
            inputStream = new FileInputStream(file);
            inputStream.read(buf, 0, 132);
        } catch (IOException ioexception) {
            return "UNKNOWN";
        } finally {
            if (inputStream != null) try { inputStream.close(); } catch (Exception exception) {}
        }
       
        int b0 = buf[0] & 255;
        int b1 = buf[1] & 255;
        int b2 = buf[2] & 255;
        int b3 = buf[3] & 255;
       
        if (buf[128] == 68 && buf[129] == 73 && buf[130] == 67 && buf[131] == 77
            && ((b0 == 73 && b1 == 73) || (b0 == 77 && b1 == 77)))
            return "TIFF_AND_DICOM";
       
        if (b0 == 73 && b1 == 73 && b2 == 42 && b3 == 0)
            return "TIFF";
       
        if (b0 == 77 && b1 == 77 && b2 == 0 && b3 == 42)
            return "TIFF";
       
        if (b0 == 255 && b1 == 216 && b2 == 255)
            return "JPEG";
       
        if (b0 == 71 && b1 == 73 && b2 == 70 && b3 == 56)
            return "GIF";
       
        if (buf[128] == 68 && buf[129] == 73 && buf[130] == 67 && buf[131] == 77)
            return "DICOM";
       
        if (b0 == 8 && b1 == 0 && b3 == 0)
            return "DICOM";
       
        if (b0 == 83 && b1 == 73 && b2 == 77 && b3 == 80)
            return "FITS";
       
        if (b0 == 80 && (b1 == 50 || b1 == 53) && (b2 == 10 || b2 == 13 || b2 == 32 || b2 == 9))
            return "PGM";
       
        if ( b0 == 66 && b1 == 77)
            return "BMP";
       
        if (b0 == 73 && b1 == 111)
            return "ROI";
       
        if (b0 >= 32 && b0 <= 126 && b1 >= 32 && b1 <= 126 && b2 >= 32 && b2 <= 126
                     && b3 >= 32 && b3 <= 126 && buf[8] >= 32 && buf[8] <= 126)
            return "TEXT";
       
        if (b0 == 137 && b1 == 80 && b2 == 78 && b3 == 71)
            return "PNG";
       
        return "UNKNOWN";
}


Posted by 1010