标签:MAP java 文件 FILE put 文件类型 TYPE
1 package com.mytest; 2 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.IOException; 6 import java.util.HashMap; 7 import java.util.Iterator; 8 import java.util.Map; 9 10 public class VerifyFileType { 11 12 public final static Map<String, String> FILE_TYPE_MAP = new HashMap<String, String>(); 13 private static FileInputStream is; 14 static { 15 getAllFileType(); // 初始化文件类型信息 16 } 17 /** 18 * 常用文件格式 19 */ 20 private static void getAllFileType() { 21 FILE_TYPE_MAP.put("ffd8ffe000104a464946", "jpg"); // JPEG (jpg) 22 FILE_TYPE_MAP.put("89504e470d0a1a0a0000", "png"); // PNG (png) 23 FILE_TYPE_MAP.put("47494638396126026f01", "gif"); // GIF (gif) 24 FILE_TYPE_MAP.put("49492a00227105008037", "tif"); // TIFF (tif) 25 FILE_TYPE_MAP.put("424d228c010000000000", "bmp"); // 16色位图(bmp) 26 FILE_TYPE_MAP.put("424d8240090000000000", "bmp"); // 24位位图(bmp) 27 FILE_TYPE_MAP.put("424d8e1b030000000000", "bmp"); // 256色位图(bmp) 28 FILE_TYPE_MAP.put("41433130313500000000", "dwg"); // CAD (dwg) 29 FILE_TYPE_MAP.put("3c21444f435459504520", "html"); // HTML (html) 30 FILE_TYPE_MAP.put("3c21646f637479706520", "htm"); // HTM (htm) 31 FILE_TYPE_MAP.put("48544d4c207b0d0a0942", "css"); // css 32 FILE_TYPE_MAP.put("696b2e71623d696b2e71", "js"); // js 33 FILE_TYPE_MAP.put("7b5c727466315c616e73", "rtf"); // Rich Text Format (rtf) 34 FILE_TYPE_MAP.put("38425053000100000000", "psd"); // Photoshop (psd) 35 FILE_TYPE_MAP.put("46726f6d3a203d3f6762", "eml"); // Email [Outlook Express 6] (eml) 36 FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000", "doc"); // MS Excel 注意:word、msi 和 excel的文件头一样 37 FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000", "vsd"); // Visio 绘图 38 FILE_TYPE_MAP.put("5374616E64617264204A", "mdb"); // MS Access (mdb) 39 FILE_TYPE_MAP.put("252150532D41646F6265", "ps"); 40 FILE_TYPE_MAP.put("255044462d312e350d0a", "pdf"); // Adobe Acrobat (pdf) 41 FILE_TYPE_MAP.put("2e524d46000000120001", "rmvb"); // rmvb/rm相同 42 FILE_TYPE_MAP.put("464c5601050000000900", "flv"); // flv与f4v相同 43 FILE_TYPE_MAP.put("00000020667479706d70", "mp4"); 44 FILE_TYPE_MAP.put("49443303000000002176", "mp3"); 45 FILE_TYPE_MAP.put("000001ba210001000180", "mpg"); // 46 FILE_TYPE_MAP.put("3026b2758e66cf11a6d9", "wmv"); // wmv与asf相同 47 FILE_TYPE_MAP.put("52494646e27807005741", "wav"); // Wave (wav) 48 FILE_TYPE_MAP.put("52494646d07d60074156", "avi"); 49 FILE_TYPE_MAP.put("4d546864000000060001", "mid"); // MIDI (mid) 50 FILE_TYPE_MAP.put("504b0304140000000800", "zip"); 51 FILE_TYPE_MAP.put("526172211a0700cf9073", "rar"); 52 FILE_TYPE_MAP.put("235468697320636f6e66", "ini"); 53 FILE_TYPE_MAP.put("504b03040a0000000000", "jar"); 54 FILE_TYPE_MAP.put("4d5a9000030000000400", "exe");// 可执行文件 55 FILE_TYPE_MAP.put("3c25402070616765206c", "jsp");// jsp文件 56 FILE_TYPE_MAP.put("4d616e69666573742d56", "mf");// MF文件 57 FILE_TYPE_MAP.put("3c3f786d6c2076657273", "xml");// xml文件 58 FILE_TYPE_MAP.put("494e5345525420494e54", "sql");// xml文件 59 FILE_TYPE_MAP.put("7061636b616765207765", "java");// java文件 60 FILE_TYPE_MAP.put("406563686f206f66660d", "bat");// bat文件 61 FILE_TYPE_MAP.put("1f8b0800000000000000", "gz");// gz文件 62 FILE_TYPE_MAP.put("6c6f67346a2e726f6f74", "properties");// bat文件 63 FILE_TYPE_MAP.put("cafebabe0000002e0041", "class");// bat文件 64 FILE_TYPE_MAP.put("49545346030000006000", "chm");// bat文件 65 FILE_TYPE_MAP.put("04000000010000001300", "mxp");// bat文件 66 FILE_TYPE_MAP.put("504b0304140006000800", "docx");// docx文件 67 FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000", "wps");// WPS文字wps、表格et、演示dps都是一样的 68 FILE_TYPE_MAP.put("6431303a637265617465", "torrent"); 69 70 FILE_TYPE_MAP.put("6D6F6F76", "mov"); // Quicktime (mov) 71 FILE_TYPE_MAP.put("FF575043", "wpd"); // WordPerfect (wpd) 72 FILE_TYPE_MAP.put("CFAD12FEC5FD746F", "dbx"); // Outlook Express (dbx) 73 FILE_TYPE_MAP.put("2142444E", "pst"); // Outlook (pst) 74 FILE_TYPE_MAP.put("AC9EBD8F", "qdf"); // Quicken (qdf) 75 FILE_TYPE_MAP.put("E3828596", "pwl"); // Windows Password (pwl) 76 FILE_TYPE_MAP.put("2E7261FD", "ram"); // Real Audio (ram) 77 FILE_TYPE_MAP.put("null", null); // null 78 } 79 80 /** 81 * 得到上传文件的文件头 82 * 83 * @param src 84 * @return 85 */ 86 public static String bytesToHexString(byte[] src) { 87 StringBuilder stringBuilder = new StringBuilder(); 88 if (src == null || src.length <= 0) { 89 return null; 90 } 91 for (int i = 0; i < src.length; i++) { 92 int v = src[i] & 0xFF; 93 String hv = Integer.toHexString(v); 94 if (hv.length() < 2) { 95 stringBuilder.append(0); 96 } 97 stringBuilder.append(hv); 98 } 99 return stringBuilder.toString(); 100 } 101 /** 102 * 根据制定文件的文件头判断其文件类型 103 * 104 * @param filePaht 105 * @return 106 */ 107 public static String getFileType(String filePaht) { 108 String res = null; 109 try { 110 is = new FileInputStream(filePaht); 111 byte[] b = new byte[10]; 112 is.read(b, 0, b.length); 113 String fileCode = bytesToHexString(b); 114 115 Iterator<String> keyIter = FILE_TYPE_MAP.keySet().iterator(); 116 while (keyIter.hasNext()) { 117 String key = keyIter.next(); 118 // 验证前5个字符比较 119 if (key.toLowerCase().startsWith(fileCode.toLowerCase().substring(0, 5)) 120 || fileCode.toLowerCase().substring(0, 5).startsWith(key.toLowerCase())) { 121 res = FILE_TYPE_MAP.get(key); 122 break; 123 } 124 } 125 } catch (FileNotFoundException e) { 126 e.printStackTrace(); 127 } catch (IOException e) { 128 e.printStackTrace(); 129 } 130 return res; 131 } 132 133 public static void main(String[] args) throws Exception { 134 String type = getFileType("E:\\20170615163016.png"); 135 System.out.println("Except : " + type); 136 System.out.println(); 137 } 138 }
标签:MAP,java,文件,FILE,put,文件类型,TYPE 来源: https://www.cnblogs.com/guohu/p/13727637.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。