, String>();privateVerifyFileType(){}

static{

getAllFileType();//初始化文件类型信息}

/*** Discription:[getAllFileType,常见文件头信息]*/private static voidgetAllFileType()

{

FILE_TYPE_MAP.put("ffd8ffe000104a464946","jpg");//JPEG (jpg)FILE_TYPE_MAP.put("89504e470d0a1a0a0000","png");//PNG (png)FILE_TYPE_MAP.put("47494638396126026f01","gif");//GIF (gif)FILE_TYPE_MAP.put("49492a00227105008037","tif");//TIFF (tif)FILE_TYPE_MAP.put("424d228c010000000000","bmp");//16色位图(bmp)FILE_TYPE_MAP.put("424d8240090000000000","bmp");//24位位图(bmp)FILE_TYPE_MAP.put("424d8e1b030000000000","bmp");//256色位图(bmp)FILE_TYPE_MAP.put("41433130313500000000","dwg");//CAD (dwg)FILE_TYPE_MAP.put("3c21444f435459504520","html");//HTML (html)FILE_TYPE_MAP.put("3c21646f637479706520","htm");//HTM (htm)FILE_TYPE_MAP.put("48544d4c207b0d0a0942","css");//cssFILE_TYPE_MAP.put("696b2e71623d696b2e71","js");//jsFILE_TYPE_MAP.put("7b5c727466315c616e73","rtf");//Rich Text Format (rtf)FILE_TYPE_MAP.put("38425053000100000000","psd");//Photoshop (psd)FILE_TYPE_MAP.put("46726f6d3a203d3f6762","eml");//Email [Outlook Express 6] (eml)FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000","doc");//MS Excel 注意:word、msi 和 excel的文件头一样FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000","vsd");//Visio 绘图FILE_TYPE_MAP.put("5374616E64617264204A","mdb");//MS Access (mdb)FILE_TYPE_MAP.put("252150532D41646F6265","ps");FILE_TYPE_MAP.put("255044462d312e350d0a","pdf");//Adobe Acrobat (pdf)FILE_TYPE_MAP.put("2e524d46000000120001","rmvb");//rmvb/rm相同FILE_TYPE_MAP.put("464c5601050000000900","flv");//flv与f4v相同FILE_TYPE_MAP.put("00000020667479706d70","mp4");FILE_TYPE_MAP.put("49443303000000002176","mp3");FILE_TYPE_MAP.put("000001ba210001000180","mpg");//FILE_TYPE_MAP.put("3026b2758e66cf11a6d9","wmv");//wmv与asf相同FILE_TYPE_MAP.put("52494646e27807005741","wav");//Wave (wav)FILE_TYPE_MAP.put("52494646d07d60074156","avi");FILE_TYPE_MAP.put("4d546864000000060001","mid");//MIDI (mid)FILE_TYPE_MAP.put("504b0304140000000800","zip");FILE_TYPE_MAP.put("526172211a0700cf9073","rar");FILE_TYPE_MAP.put("235468697320636f6e66","ini");FILE_TYPE_MAP.put("504b03040a0000000000","jar");FILE_TYPE_MAP.put("4d5a9000030000000400","exe");//可执行文件FILE_TYPE_MAP.put("3c25402070616765206c","jsp");//jsp文件FILE_TYPE_MAP.put("4d616e69666573742d56","mf");//MF文件FILE_TYPE_MAP.put("3c3f786d6c2076657273","xml");//xml文件FILE_TYPE_MAP.put("494e5345525420494e54","sql");//xml文件FILE_TYPE_MAP.put("7061636b616765207765","java");//java文件FILE_TYPE_MAP.put("406563686f206f66660d","bat");//bat文件FILE_TYPE_MAP.put("1f8b0800000000000000","gz");//gz文件FILE_TYPE_MAP.put("6c6f67346a2e726f6f74","properties");//bat文件FILE_TYPE_MAP.put("cafebabe0000002e0041","class");//bat文件FILE_TYPE_MAP.put("49545346030000006000","chm");//bat文件FILE_TYPE_MAP.put("04000000010000001300","mxp");//bat文件FILE_TYPE_MAP.put("504b0304140006000800","docx");//docx文件FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000","wps");//WPS文字wps、表格et、演示dps都是一样的FILE_TYPE_MAP.put("6431303a637265617465","torrent");FILE_TYPE_MAP.put("3c68746d6c20786d6c6e","htm");//猎聘、智联简历。htmFILE_TYPE_MAP.put("46726f6d3a3cd3c920cd","mht");//51job简历。mhtFILE_TYPE_MAP.put("6D6F6F76","mov");//Quicktime (mov)FILE_TYPE_MAP.put("FF575043","wpd");//WordPerfect (wpd)FILE_TYPE_MAP.put("CFAD12FEC5FD746F","dbx");//Outlook Express (dbx)FILE_TYPE_MAP.put("2142444E","pst");//Outlook (pst)FILE_TYPE_MAP.put("AC9EBD8F","qdf");//Quicken (qdf)FILE_TYPE_MAP.put("E3828596","pwl");//Windows Password (pwl)FILE_TYPE_MAP.put("2E7261FD","ram");//Real Audio (ram)}

/*** 得到上传文件的文件头*@paramsrc*@return*/public staticString bytesToHexString(byte[] src) {

StringBuilder stringBuilder = newStringBuilder();if(src == null|| src.length<= 0) {

return null;}

for(inti = 0;i < src.length;i++) {

intv = src[i] & 0xFF;String hv = Integer.toHexString(v);if(hv.length() < 2) {

stringBuilder.append(0);}

stringBuilder.append(hv);}

returnstringBuilder.toString();}

/*** 根据制定文件的文件头判断其文件类型*@paramfilePaht*@return*/public staticString getFileType(String filePaht){

String res = null;try{

FileInputStream is = newFileInputStream(filePaht);byte[] b = new byte[10];is.read(b,0,b.length);String fileCode = bytesToHexString(b);System.out.println(fileCode);//这种方法在字典的头代码不够位数的时候可以用但是速度相对慢一点IteratorkeyIter = FILE_TYPE_MAP.keySet().iterator();while(keyIter.hasNext()){

String key = keyIter.next();if(key.toLowerCase().startsWith(fileCode.toLowerCase()) || fileCode.toLowerCase().startsWith(key.toLowerCase())){

res = FILE_TYPE_MAP.get(key);break;}

}

} catch(FileNotFoundException e) {

e.printStackTrace();} catch(IOException e) {

e.printStackTrace();}

returnres;}

public static voidmain(String[] args) throwsException {

String type = getFileType("D:/智联招聘_贾峻权_java中级开发..._中文_20160829_65840716.doc");System.out.println("Except : "+type);System.out.println();/* type = getFileType("C:/test/350996.wav");System.out.println("350996.wav : "+type);System.out.println(); */}

}

java校验文件格式_java验证文件格式工具类(获取文件真实格式)相关推荐

  1. java工具类获取文件扩展名与content-type、http与content-type映射关系

    java工具类获取文件扩展名与content-type.http与content-type映射关系 大家好,我是酷酷的韩~ 一.对应关系参考地址: http://doc.chacuo.net/cont ...

  2. java签名软件_Java实现签名工具类

    一 点睛 签名和验证签名常常用于网络安全,在此提供一个工具类. 二 代码 package com.imooc.demo.common.util; import org.apache.commons.c ...

  3. java 静态类 安全_Java静态static工具类线程安全问题研究

    针对静态方法有以下一些前提: 静态方法和实例方法的区别是静态方法只能引用静态变量,静态方法通过类名来调用,实例方法通过对象实例来调用 每个线程都有自己的线程栈,栈与线程同时创建,每一个虚拟机线程都有自 ...

  4. java时间随机数_java开发代码工具类(时间戳/随机数/日期等)

    简介 java开发代码工具类,提高开发效率,持续更新~ 实践 package com.springboot.sixmonth.common.util; import java.math.BigInte ...

  5. java计算工作日_Java工作日计算工具类

    工作日计算工具类 主要功能:传入两个日期,返回这两个日期之间有多少个工作日. 思路: 预先设置好一定年份范围内的节假日.补休到map里.(这里暂时只设置了2017 - 2018年的) 将这个年份范围内 ...

  6. java word生成_JAVA生成WORD工具类

    该方法借助freemarker的JAR包即可. 参考: 所需工具: 步骤: 1.在word中编辑好模版样式,设置好占位符,注意图片最好先黏上去 2.在word中,文件-另存为-XML格式 3.使用工具 ...

  7. java 查找一行_Java培训之工具类通用的查询一行多列,非实体

    //通用的查询方法之四:查询多行多列,但每一行又不是一个JavaBean /* * SELECT did,AVG(salary),MAX(Salary) FROM t_employee GROUP B ...

  8. java描绘条形码_java生成条形码工具类

    /** * 静态内部类 * 自定义的 TextPainter, 允许定义字体,大小,文本等 * 参考底层实现:BaseLineTextPainter.getInstance() */ protecte ...

  9. java 获取温度_Java利用RXTX串口通信工具类获取DS18B20温度传感器的温度值

    环境:Windows10,Eclipse4.5.2,JDK1.7 设备:DS18B20温度传感器(4线,485接口),USB转485接口转换器,笔记本电脑 注意点:RTU传输,使用的是字节,那么在程序 ...

最新文章

  1. sprintf-%s的用法
  2. AI理论知识整理(5)-对称矩阵-对角化
  3. 3月第2周安全回顾 微软修补12个漏洞 ***盯上企业FTP
  4. go语言mysql删除记录_MySQL数据库删除操作-Go语言中文社区
  5. web 开发之js---理解并解决IE的内存泄漏方式
  6. 修改joomla!底部版权信息的方法
  7. UnicodeMath编码教程
  8. html 屏幕录像,绝对是最简单的屏幕录像方法!无需安装软件
  9. Keras机器翻译实战
  10. Thinkpad E430 vt功能开启
  11. Python 将tif文件分割成多个小tif
  12. 军队文职(数学2+物理)——高等数学 1、函数
  13. 多可系统的权限规则详解
  14. OSPF——基本概念2(多区域与Vlink)
  15. Bootstrap CSS Layout (1) - Breakpoint
  16. MySQL数据库练习3
  17. 家装家居自救指南:线上线下大融合
  18. 追寻着最初的梦想,我们上路吧
  19. ironpython 使用-IronPython
  20. 【JavaEE进阶系列 | 从小白到工程师】JavaWeb中的过滤器(Filter)和监听器(Listener)区别,看这一篇就够

热门文章

  1. 用老毛桃U盘安装:[3]Ghost版Win7系统
  2. linux 基线加固/等保整改
  3. 总结及处理u盘安装Ubuntu18.04的坑
  4. MySQL实现排名(函数方式)
  5. k2677场效应管参数引脚_常用场效MOS应管参数大全-电压参数表图文
  6. 如何分析和研究Log文件 ,如何看日志信息
  7. 基于NanoPi的人体感应模块驱动开发
  8. Skype与Teams的混合部署--意义,效果,注意事项以及建议
  9. mt4软件的详细介绍
  10. 数的机器码表示:原码、反码、补码、变形补码、移码和浮点数编码