参考博客http://blog.csdn.net/shixing_11/article/details/5708145
每个文件类型都对应着一个编码头部
下面这些是已知的文件头部[自定义的枚举类型]
package org.masque.file; /** * * Description:文件对应的文件头,资源来自网络 * FileHead.java Create on 2014年6月22日 下午1:14:03 * @author masque.java@outlook.com * @version 1.0 * Copyright (c) 2014 Company,Inc. All Rights Reserved. */ public enum FileHead { JPG("jpg", "FFD8FF"), //JPEG (jpg) PNG("png", "89504E47"), //PNG (png) GIF("gif", "47494638"), //GIF (gif) TIF("tif", "49492A00"), //TIFF (tif) BMP("bmp", "424D"), //Windows Bitmap (bmp) DWG("dwg", "41433130"), //CAD (dwg) HTML("html", "68746D6C3E"), //HTML (html) RTF("rtf", "7B5C727466"), //Rich Text Format (rtf) XML("xml", "3C3F786D6C"), ZIP("zip", "504B0304"), RAR("rar", "52617221"), PSD("psd", "38425053"), //Photoshop (psd) EML("eml", "44656C69766572792D646174653A"), //Email [thorough only] (eml) DBX("dbx", "CFAD12FEC5FD746F"), //Outlook Express (dbx) PST("pst", "2142444E"), //Outlook (pst) DOC_XLS("doc_xls", "D0CF11E0"), //MS Excel 注意:word 和 excel的文件头一样 MDB("mdb", "5374616E64617264204A"), //MS Access (mdb) WPD("wpd", "FF575043"), //WordPerfect (wpd) EPS("eps", "252150532D41646F6265"), PS("ps", "252150532D41646F6265"), PDF("pdf", "255044462D312E"), //Adobe Acrobat (pdf) QDF("qdf", "AC9EBD8F"), //Quicken (qdf) PWL("pwl", "E3828596"), //Windows Password (pwl) WAV("wav", "57415645"), //Wave (wav) AVI("avi", "41564920"), RAM("ram", "2E7261FD"), //Real Audio (ram) RM("rm", "2E524D46"), //Real Media (rm) MPG("mpg", "000001BA"), // MOV("mov", "6D6F6F76"), //Quicktime (mov) ASF("asf", "3026B2758E66CF11"), //Windows Media (asf) MID("mid", "4D546864"); //MIDI (mid) private String type; private String code; FileHead(String type,String code){ this.type = type; this.code = code; } public String getType() { return type; } public String getCode() { return code; } public static FileHead getLikeCode(String code){ System.out.println(code); if (code==null||"".equals(code)) return null; code = code.toUpperCase(); FileHead [] fhs = FileHead.values(); for (FileHead fh:fhs) { //模糊匹配文件头 if (code.startsWith(fh.code)) { return fh; } } return null; } public static FileHead getByType(String type){ FileHead [] fhs = FileHead.values(); for (FileHead fh:fhs) { if (fh.getType().equals(type)) { return fh; } } return null; } public static FileHead getByCode(String code){ FileHead [] fhs = FileHead.values(); for (FileHead fh:fhs) { if (fh.getCode().equals(code)) { return fh; } } return null; } }
使用方法如下
package org.masque.file; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; /** * * Description: 读取文件的前部分字节在已知的库中比对 * CheckFileHead.java Create on 2014年6月22日 下午1:48:09 * @author masque.java@outlook.com * @version 1.0 * Copyright (c) 2014 Company,Inc. All Rights Reserved. */ public class CheckFileHead { public static void main(String[] args) { String fileHeadStr = getFileByFile(new File("C:/40882199905262314.jpg")); FileHead fileHead = FileHead.getLikeCode(fileHeadStr); System.out.println(fileHead!=null?fileHead.getType():"未知的文件类型!"); } public final static String getFileByFile(File file) { String filetype = null; byte[] b = new byte[30]; try { InputStream is = new FileInputStream(file); is.read(b); filetype = getFileHexString(b); is.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return filetype; } public final static String getFileHexString(byte[] b) { StringBuilder stringBuilder = new StringBuilder(); if (b == null || b.length <= 0) { return null; } for (int i = 0; i < b.length; i++) { int v = b[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); } }
代码比较简单就不做详细介绍
相关推荐
xp下使用文件类型识别软件 很多扩展名被该后无法知道该文件原有类型,通过16进制文件头的信息自动分辨文件类型
能分辨文件的种类 【思政目标】 培养学生职业素养和工匠精神。 1.Linux文件类型 Linux的文件类型大致可分为: 普通文件:用于存放数据、程序等信息的文件。 目录文件:是由文件系统中一个目录所包含的目录项组成的...
file命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。 语法格式:file [参数] [文件] 常用参数: -b 列出辨识...
PC版的喜马拉雅客户端下载的m4a文件,名称是一串数字,真实名称被保存到一个list.json,通过解析该文件,实现批量重命名下载的视听文件。 该脚本的主要功能是:把下载的文件重命名为“真实名称.mp3” 使用方法: 1.将...
世界海岸线矢量shape文件以及其他文件格式, 包括一些主要岛屿,高分辨率,可以使用相关软件进行删减等操作,免费下载使用。
辨别下列复句类型.doc
简单的分辨图片类型
中国湖泊高分辨率矢量图shp文件 - (青海湖)ArcGIS使用
对无法进行自动恢复的文件类型,CHK文件恢复专家提供了强大的手工判断功能,可以通过4种方法读取文件内容来对文件的类型进行判断恢复。 CHK文件恢复专家简单易用,您只需要选择磁盘,点击搜索,软件就可以自动对...
YUV文件解析,帧辨别,学习所用,无实际下载意义!
今天老wu一朋友发了份PCB设计文件给我,文件后缀是.brd,用Allegro软件打不开,我朋友用的是Allegro 16.6,以为文件是用Allegro 17.2设计的,让我帮他确认下。 我用Allegro 17.2打开文件依然提示报错,明显不是...
中国湖泊高分辨率矢量图shp文件 - (武汉武湖)ArcGIS使用
一种基于GPU和内存映射文件的高分辨率遥感图像快速处理方法.pdf
2.为了当大数据量是使用缩略视图出现内存溢出,尽量缩小了缩略图的大写,但还是能够分辨出图片是否相同 3.没有实现搜索方式变动自动搜索的功能 免责声明: 本工具完全免费,因使用此工具造成的损失本人不承担责任. 作者:...
中国湖泊高分辨率矢量图shp文件 - (黄冈武山湖)ArcGIS使用
中国湖泊高分辨率矢量图shp文件 - (霍河水库)ArcGIS使用
江苏省土壤类型shp矢量图层数据下载,附带说明文件
中国湖泊高分辨率矢量图shp文件 - (黄石网湖)ArcGIS使用
亚洲分布shp面文件,来源于mapcruzin,高质量,可用于ArcGis系统处理分析,使用请注明来源及引用,谢谢。
《丹青中英文文件辨识系统》黄金版V4.10 电驴中可供下载 丹青中英文文件辨识系统能让您轻松且快速地将图片转换成可编辑的文本文件。其所能辨识的内容包括繁体中文、简体中文、英文、阿拉伯数字及含表格的文件。辨识...