public class FileType {

private final static Map FILE_TYPE_MAP = new HashMap();

private FileType(){}

static{

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

}

private static void getAllFileType(){

FILE_TYPE_MAP.put("ffd8ffe000104a464946", "jpg");

FILE_TYPE_MAP.put("89504e470d0a1a0a0000", "png");

FILE_TYPE_MAP.put("47494638396126026f01", "gif");

FILE_TYPE_MAP.put("49492a00227105008037", "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");

FILE_TYPE_MAP.put("3c21444f435459504520", "html");

FILE_TYPE_MAP.put("3c21646f637479706520", "htm");

FILE_TYPE_MAP.put("48544d4c207b0d0a0942", "css");

FILE_TYPE_MAP.put("696b2e71623d696b2e71", "js");

FILE_TYPE_MAP.put("7b5c727466315c616e73", "rtf");

FILE_TYPE_MAP.put("38425053000100000000", "psd");

FILE_TYPE_MAP.put("46726f6d3a203d3f6762", "eml");

FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000", "doc"); // MS Excel、Word、Msi

FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000", "vsd");

FILE_TYPE_MAP.put("5374616E64617264204A", "mdb");

FILE_TYPE_MAP.put("255044462d312e350d0a", "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");

FILE_TYPE_MAP.put("52494646d07d60074156", "avi");

FILE_TYPE_MAP.put("4d546864000000060001", "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");

FILE_TYPE_MAP.put("4d616e69666573742d56", "mf");

FILE_TYPE_MAP.put("3c3f786d6c2076657273", "xml");

FILE_TYPE_MAP.put("494e5345525420494e54", "sql");

FILE_TYPE_MAP.put("7061636b616765207765", "java");

FILE_TYPE_MAP.put("406563686f206f66660d", "bat");

FILE_TYPE_MAP.put("1f8b0800000000000000", "gz");

FILE_TYPE_MAP.put("6c6f67346a2e726f6f74", "properties");

FILE_TYPE_MAP.put("cafebabe0000002e0041", "class");

FILE_TYPE_MAP.put("49545346030000006000", "chm");

FILE_TYPE_MAP.put("04000000010000001300", "mxp");

FILE_TYPE_MAP.put("504b0304140006000800", "docx");

FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000", "wps");// WPS(wps、et、dps)

FILE_TYPE_MAP.put("6431303a637265617465", "torrent");

FILE_TYPE_MAP.put("6D6F6F76", "mov");

FILE_TYPE_MAP.put("FF575043", "wpd");

FILE_TYPE_MAP.put("CFAD12FEC5FD746F", "dbx");

FILE_TYPE_MAP.put("2142444E", "pst");

FILE_TYPE_MAP.put("AC9EBD8F", "qdf");

FILE_TYPE_MAP.put("E3828596", "pwl");

FILE_TYPE_MAP.put("2E7261FD", "ram");

}

/**

* 得到上传文件的文件头

* @param src

* @return

*/

private static String bytesToHexString(byte[] src){

StringBuilder stringBuilder = new StringBuilder();

if(null==src || src.length <= 0){

return null;

}

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

int v = src[i] & 0xFF;

String hv = Integer.toHexString(v);

if(hv.length() < 2){

stringBuilder.append(0);

}

stringBuilder.append(hv);

}

return stringBuilder.toString();

}

/**

* 获取文件类型

* @param file

* @return

*/

public static String getFileType(File file){

String res = null;

try{

@SuppressWarnings("resource")

FileInputStream fis = new FileInputStream(file);

byte[] b = new byte[10];

fis.read(b, 0, b.length);

String fileCode = bytesToHexString(b);

Iterator keyIter = 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();

}

return res;

}

}

java文件头_Java根据文件头判断文件类型相关推荐

  1. java 判断文件类型(根据文件头)

    后缀判断的隐患: 对于判断前端(或网络)发送过来文件的类型,有些同学第一个想到的可能就是:根据其后缀名进行格式的判断... 正常情况下,是可以这样做.但实际上,任何文件的后缀都可以随意命名,因此仅通过 ...

  2. java文件头工具类_判断文件类型工具类

    package com.huawei.fileExerise; import java.io.FileInputStream; import java.io.IOException; import j ...

  3. java 文件头 文件类型 files_根据文件头数据判断文件类型

    现有一文件,其扩展名未知或标记错误.假设它是一个正常的.非空的文件,且将扩展名更正后可以正常使用,那么,如何判断它是哪种类型的文件? 在后缀未知,或者后缀被修改的文件,依然通过文件头来判断该文件究竟是 ...

  4. 利用文件头判断文件类型

    上传文件时经常需要做文件类型判断,例如图片.文档等,普通做法是直接判断文件后缀名,而文艺青年为了防止各种攻击同时也会加上使用文件头信息判断文件类型. 原理很简单:用文件头判断,直接读取文件的前2个字节 ...

  5. python如何区分文件类型_python通过文件头判断文件类型

    对于提供上传的服务器,需要对上传的文件进行过滤. 本文为大家提供了python通过文件头判断文件类型的方法,避免不必要的麻烦. 分享代码如下 import struct # 支持文件类型 # 用16进 ...

  6. php读取某类型文件代码,php代码实现读取文件头判断文件类型

    php代码实现读取文件头判断文件类型,支持图片.rar.exe等后缀. 案例: //为图片的路径可以用d:/upload/11.jpg等绝对路径 $file = fopen($filename, &q ...

  7. SpringBoot 文件上传 通过Content-Type和文件头判断文件类型

    SpringBoot 文件上传 通过Content-Type和文件头判断文件类型 一.关于MIME MIME的全称是Multipurpose Internet Mail Extensions,即多用途 ...

  8. java语言怎样判断文件夹_JAVA语言之如何判断文件,判断文件夹是否存在的代码...

    本文主要向大家介绍了JAVA语言之如何判断文件,判断文件夹是否存在的代码,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.判断文件是否存在,不存在则创建File file = ne ...

  9. java 判断文件类型是否是音频_用java流方式判断文件类型

    这个方法只能在有限的范围内有效.并不是万金油 比如 图片类型判断,音频文件格式判断,视频文件格式判断等这种肯定是2进制且专业性很强的文件类型判断. 下面给出完整版代码 首先是文件类型枚取 packag ...

  10. java 判断文件的类型,用java流方式判断文件类型

    这个方法只能在有限的范围内有效.并不是万金油 比如 图片类型判断,音频文件格式判断,视频文件格式判断等这种肯定是2进制且专业性很强的文件类型判断. 下面给出完整版代码 首先是文件类型枚取 packag ...

最新文章

  1. python语法手册chm-python3.5.2官方帮助文档 参考手册(CHM版)
  2. ITK:重采样DICOM系列
  3. linux下gem卸载,gem 安装卸载pod
  4. 海底捞员工:假笑到脸僵,撑到经理月入20万
  5. java 开启wifi_通过java代码打开wifi direct
  6. linux中screen命令的用法
  7. Qt 之 QEvent
  8. 关于利用Windows权限屏蔽Win10易升
  9. 服务器usb驱动安装系统安装失败怎么办,USB3.0驱动无法安装失败怎么办?USB驱动失败失败的解决方法...
  10. WhatsApp有效号码筛选器WhatsApp频道号WhatsApp群发助手
  11. Phyton Flask框架学习记录。
  12. 医生一句话,6岁女娃的视力从0.15回到1.0!
  13. 程序员的自我修养阅读笔记
  14. vr 瞬移_瞬移演示
  15. java 类型转换
  16. java 访问网址并将返回结果的json数组转换为List<String>
  17. uboot.lds 链接文件分析
  18. python发邮件附件带变量_Python 第17关——邮件还能这样发(QQ邮箱)!
  19. 【经验】代码统计工具cloc
  20. 找到Tiny OS的创始人,畅谈新时代的爆款“物联网”

热门文章

  1. Ubuntu16.04操作系统下配置caffe环境(GPU版本)
  2. 将mysql表导入sqlserver中_sql server to mysql 导入数据库
  3. 魔兽,极品飞车等等游戏在win7下不能全屏
  4. 用户规模5亿+的余额宝是如何做服务治理的?
  5. 萧毅舟;3.1今日黄金走势分析,反弹空,黄金白银操作建议
  6. 饥荒联机自建服务器有什么用,联机版饥荒使用专用服务器的好处 | 手游网游页游攻略大全...
  7. cas:174645-81-9/[C4MIm]SbF6/1-丁基-3-甲基咪唑六氟锑酸盐离子液体/分子量:374.97
  8. python爬虫抓取微信头像
  9. SOPHGO SE5微服务器支持的外围设备
  10. 投资风险的度量-组合方差、回归方程的计算