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"; }