参考博客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(); } }
代码比较简单就不做详细介绍
相关推荐
通过读取并比较这些文件头,我们可以有效地辨别文件是否为真正的图片。 例如,PNG图片的文件头是"\x89PNG\x0D\x0A\x1A\x0A",在JavaScript中,我们可以用`substr()`函数提取文件的前几个字符来进行比对。下面是一个...
这一程序主要针对的是接收的文件,目的是辨别文件的真实性,防止因虚假文件导致的潜在风险和损失。以下是对该程序的详细解析: 一、目的与重要性 虚假文件识别程序的核心目的是保护企业的正常运作,避免因为错误或...
各部门主管需考虑本部门的特定文件类型,制定相应的识别策略,并对员工进行定制化的培训,确保每位员工都具备辨别文件真伪的能力。 4. **奖励机制**: 为了激励员工积极参与文件真伪的识别,公司制定了奖励措施。...
在地图制作中,它可以提供真实的地表高程信息,使得地图更加精确;在环境研究中,可用于水文分析、洪水模拟、气候模型研究等。 总的来说,"grd"高程数据的下载和处理是GIS工作中的一项基础任务,熟练掌握相关的软件...
VC++作为一种功能强大的C++编程环境,可以用来开发处理这种类型文件的应用程序。在使用VC++处理BSQ文件时,我们需要理解其内部结构并编写相应的代码来解析数据。 首先,了解BSQ文件的基本结构至关重要。BSQ文件通常...
描述中提到的“阿拉伯数字的wav音频文件”暗示了这些文件可能包含用语音合成或真实人声读出的阿拉伯数字。在语音识别、语言学习、互动软件或电话自动应答系统中,这样的音频文件非常有用。例如,它们可以作为训练...
4. **查看文件扩展名**:同样在查看菜单下,勾选“文件扩展名”,可以让你看到每个文件的真实扩展名,这对于辨别文件类型非常重要。 #### 三、Win8系统中IE10浏览器的云同步功能 随着云计算技术的发展,“云同步”...
高分辨率的点阵图意味着图像更为细腻,细节更为丰富,但与此同时,它们的文件体积也更大,需要更多的存储空间和更强大的处理能力。 点阵图的尺寸和大小受到其像素数量的影响。而图像的颜色深度,即位深度,决定了...
这个功能能够帮助开发者辨别哪些节是真实的,从而避免因误操作导致的问题。 2. **从资源获取所有节名称**:在配置文件中,"节"通常代表不同的配置区域,比如“[用户设置]”或“[系统设置]”。这个功能允许开发者...
PCM音频播放器是专为播放这种类型的音频文件设计的软件。 PCM的基本工作原理是通过采样、量化和编码三个步骤将连续的模拟信号转换成离散的数字信号。首先,采样过程以一定的频率捕捉音频信号的幅度,这个频率决定了...
6. **多光谱分析**:tif文件可能包含多光谱信息,通过对不同波段的分析,可以识别地物类型,如区分作物种类、评估植物健康状况。 7. **数字高程模型(DEM)**:结合无人机数据,可创建地形模型,用于分析地表起伏和...
尽管PULSE在图像超分辨率方面取得了显著成就,但依然存在一些挑战,比如处理动态图像时的实时性能、对不同类型的图像的泛化能力,以及如何在保持真实感的同时减少假象的生成。未来的研究可能会集中在这些问题的解决...
4. **大文件支持**:Hex Editor Neo可以处理非常大的文件,这在处理高分辨率图像或大量图片集合时非常实用。 5. **集成校验和计算**:它内置了多种校验和(如CRC、MD5、SHA等)和哈希计算功能,可以验证图片文件的...
在OpenGL中,纹理是将颜色数据应用到几何形状上的重要方式,常用于创建复杂的表面效果和真实感渲染。这个头文件可能包含函数或类,用于读取常见的图像文件格式(如JPEG、PNG或BMP),并将其转换为OpenGL可以理解的...
这些检测方法可以帮助服务器确认文件的真实类型,以防止上传恶意文件。 在网络渗透的过程中,上传攻击的实质是攻击者利用文件上传功能的安全漏洞,突破网站的安全防线。文件上传攻击的原理涉及到直接解析上传的文件...
高分辨率可以保证图像的清晰度,但也会增加文件大小;反之,降低分辨率可以减小文件尺寸,但可能牺牲图像细节。 4. **格式支持**: Ultra Image Printer支持多种常见的图像格式,如JPEG(适合网络分享,但有压缩...
3. `Indian_pines_gt.mat` 文件则是标签文件,其中包含了每个像素的真实类别信息,即地物分类结果。"gt"通常表示“Ground Truth”(地面实况),它是通过实地调查或者参照高分辨率图像获得的。这个标签文件是评估...
标题中的“行业分类-设备装置-一种纸币多光谱高分辨率图像采集系统及采集方法”揭示了这个压缩包文件内容的核心,它涉及到的是金融行业,特别是与货币处理相关的设备技术。这种系统和方法主要用于纸币的识别和验证,...
这份数据基于欧洲空间局(ESA)的高分辨率遥感卫星图像,提供了10米的分辨率,意味着每个像素代表10米×10米的地面区域。这样的高精度使得数据在城市规划、农业管理、环境保护、灾害监测等多个领域都有广泛的应用。 ...
这可能包括调整光线、对焦、色彩平衡等参数,以确保照片清晰、真实,符合各类证件的要求。 图像裁切功能是软件的另一大亮点。它内置了多种国际和国内通用的证照尺寸模板,如一寸、二寸、护照尺寸等,用户只需选择...