FILE_TYPE_MAP= new HashMap<>();
+ static {
+ FILE_TYPE_MAP.put("jpg", "FFD8FF"); //JPEG (jpg)
+ FILE_TYPE_MAP.put("png", "89504E47"); //PNG (png)
+ FILE_TYPE_MAP.put("gif", "47494638"); //GIF (gif)
+ FILE_TYPE_MAP.put("tif", "49492A00"); //TIFF (tif)
+ FILE_TYPE_MAP.put("bmp", "424D"); //Windows Bitmap (bmp)
+ FILE_TYPE_MAP.put("dwg", "41433130"); //CAD (dwg)
+ FILE_TYPE_MAP.put("html", "68746D6C3E"); //HTML (html)
+ FILE_TYPE_MAP.put("rtf", "7B5C727466"); //Rich Text Format (rtf)
+ FILE_TYPE_MAP.put("xml", "3C3F786D6C");
+ FILE_TYPE_MAP.put("zip", "504B0304");
+ FILE_TYPE_MAP.put("rar", "52617221");
+ FILE_TYPE_MAP.put("psd", "38425053"); //Photoshop (psd)
+ FILE_TYPE_MAP.put("eml", "44656C69766572792D646174653A"); //Email [thorough only] (eml)
+ FILE_TYPE_MAP.put("dbx", "CFAD12FEC5FD746F"); //Outlook Express (dbx)
+ FILE_TYPE_MAP.put("pst", "2142444E"); //Outlook (pst)
+ FILE_TYPE_MAP.put("xls", "D0CF11E0"); //MS Word
+ FILE_TYPE_MAP.put("doc", "D0CF11E0"); //MS Excel 注意:word 和 excel的文件头一样
+ FILE_TYPE_MAP.put("mdb", "5374616E64617264204A"); //MS Access (mdb)
+ FILE_TYPE_MAP.put("wpd", "FF575043"); //WordPerfect (wpd)
+ FILE_TYPE_MAP.put("eps", "252150532D41646F6265");
+ FILE_TYPE_MAP.put("ps", "252150532D41646F6265");
+ FILE_TYPE_MAP.put("pdf", "255044462D312E"); //Adobe Acrobat (pdf)
+ FILE_TYPE_MAP.put("qdf", "AC9EBD8F"); //Quicken (qdf)
+ FILE_TYPE_MAP.put("pwl", "E3828596"); //Windows Password (pwl)
+ FILE_TYPE_MAP.put("wav", "57415645"); //Wave (wav)
+ FILE_TYPE_MAP.put("avi", "41564920");
+ FILE_TYPE_MAP.put("ram", "2E7261FD"); //Real Audio (ram)
+ FILE_TYPE_MAP.put("rm", "2E524D46"); //Real Media (rm)
+ FILE_TYPE_MAP.put("mpg", "000001BA"); //
+ FILE_TYPE_MAP.put("mov", "6D6F6F76"); //Quicktime (mov)
+ FILE_TYPE_MAP.put("asf", "3026B2758E66CF11"); //Windows Media (asf)
+ FILE_TYPE_MAP.put("mid", "4D546864"); //MIDI (mid)
+ }
/**
* 获取文件类型
*
@@ -73,4 +111,58 @@ public class FileTypeUtils
}
return strFileExtendName;
}
+
+ /**
+ * 方法描述:将要读取文件头信息的文件的byte数组转换成string类型表示
+ *
+ * 要读取文件头信息的文件的byte数组
+ *
+ * @return 文件头信息
+ * @param src
+ * @return
+ * @author:chengjx
+ * @createTime:2021年10月18日 下午5:08:23
+ */
+ public static String bytesToHexString(byte[] src) {
+ StringBuilder builder = new StringBuilder();
+ if (src == null || src.length <= 0) {
+ return null;
+ }
+ String hv;
+ for (int i = 0; i < src.length; i++) {
+ // 以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式,并转换为大写
+ hv = Integer.toHexString(src[i] & 0xFF).toUpperCase();
+ if (hv.length() < 2) {
+ builder.append(0);
+ }
+ builder.append(hv);
+ }
+ return builder.toString();
+ }
+
+ public static String getType(byte[] bytes){
+ String s = bytesToHexString(bytes);
+ s = s.toUpperCase();
+ String type;
+ if (s.startsWith(FileTypeUtils.FILE_TYPE_MAP.get("jpg"))) {
+ type = "jpg";
+ } else if (s.startsWith(FileTypeUtils.FILE_TYPE_MAP.get("png"))) {
+ type = "png";
+ } else if (s.startsWith(FileTypeUtils.FILE_TYPE_MAP.get("gif"))) {
+ type = "gif";
+ } else if (s.startsWith(FileTypeUtils.FILE_TYPE_MAP.get("tif"))) {
+ type = "tif";
+ } else if(s.startsWith(FileTypeUtils.FILE_TYPE_MAP.get("bmp"))){
+ type = "bmp";
+ } else if(s.startsWith(FileTypeUtils.FILE_TYPE_MAP.get("pdf"))){
+ type = "pdf";
+ } else if(s.startsWith(FileTypeUtils.FILE_TYPE_MAP.get("xml"))){
+ type = "xml";
+ }else {
+ type = "undefined";
+ }
+ return type;
+ }
+
+
}
\ No newline at end of file