本文实例讲述了Android中Java根据文件头获取文件类型的方法。分享给大家供大家参考,具体如下: 前面讲过Android系统内部的MediaFile类来获取文件类型的办法,这个类主要是根据文件的扩展名来判断,其准确性不是很好。具体可查看Android系统使用MediaFile类判断音频文件类型。其实,获取文件类型最好的办法便是根据文件头信息来判断。下面贴出相关代码: public class FileType { public static final HashMap<String> mFileTypes = new HashMap<String>() 在Android开发中,准确地识别文件类型对于许多应用功能至关重要,例如媒体播放、资源管理或内容解析。传统的文件类型识别方法通常依赖于文件扩展名,然而这种方法并不总是可靠的,因为用户可以随意更改文件的扩展名。为了提高识别的准确性,我们可以依据文件头信息来判断文件类型。文件头通常包含特定的字节序列,这些序列是文件格式的标识符。 本文将详细介绍一种在Android中使用Java根据文件头获取文件类型的实现方法。这个方法创建了一个名为`FileType`的类,其中包含一个`HashMap`用来存储不同文件类型与其对应的文件头信息。以下是一些常见文件类型的文件头及其十六进制表示: - `"FFD8FF"` 对应于JPEG("jpg")图像文件 - `"89504E47"` 对应于PNG("png")图像文件 - `"47494638"` 对应于GIF("gif")图像文件 - `"49492A00"` 对应于TIFF("tif")图像文件 - `"424D"` 对应于BMP("bmp")图像文件 除了图像文件外,还包括其他各种类型的文件,如: - `"41433130"` 对应于DWG("dwg")CAD文件 - `"38425053"` 对应于PSD("psd")Adobe Photoshop文件 - `"7B5C727466"` 对应于RTF("rtf")富文本格式文件 - `"3C3F786D6C"` 对应于XML("xml")文档 - `"68746D6C3E"` 对应于HTML("html")网页文件 - `"44656C69766572792D646174653A"` 对应于EML("eml")电子邮件文件 - `"D0CF11E0"` 对应于Microsoft Word文档("doc") - `"5374616E64617264204A"` 对应于Microsoft Access数据库("mdb") - `"252150532D41646F6265"` 对应于Adobe PostScript文件("ps") - `"255044462D312E"` 对应于PDF("pdf")文档 - `"504B0304"` 对应于ZIP("zip")压缩文件 - `"52617221"` 对应于RAR("rar")压缩文件 - `"57415645"` 对应于WAV("wav")音频文件 - `"41564920"` 对应于AVI("avi")视频文件 - `"2E524D46"` 对应于RealMedia("rm")视频文件 - `"000001BA"` 和 `"000001B3"` 对应于MPEG("mpg")视频文件 - `"6D6F6F76"` 对应于QuickTime("mov")视频文件 - `"3026B2758E66CF11"` 对应于ASF("asf")流媒体文件 - `"4D546864"` 对应于MIDI("mid")音乐文件 - `"1F8B08"` 对应于GZIP("gz")压缩文件 `FileType` 类提供了两个关键方法: 1. `getFileType(String filePath)`:此方法接收文件路径作为参数,通过调用`getFileHeader(filePath)`获取文件头信息,然后在`mFileTypes`映射表中查找匹配的文件类型。 2. `getFileHeader(String filePath)`:这个方法使用`FileInputStream`读取文件的前三个字节,并将其转换为十六进制字符串,以便在映射表中进行比较。 通过这种方式,我们可以创建一个高效且准确的文件类型检测机制,避免了仅依赖文件扩展名可能导致的误判问题。需要注意的是,虽然这个方法覆盖了许多常见的文件类型,但并不是所有文件类型都能通过文件头识别,对于那些不在映射表中的文件类型,可能需要额外的处理逻辑或者使用更复杂的库来进行识别。
- 粉丝: 7
- 资源: 958
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于ArcEngine的GIS数据处理系统.zip
- (源码)基于JavaFX和MySQL的医院挂号管理系统.zip
- (源码)基于IdentityServer4和Finbuckle.MultiTenant的多租户身份认证系统.zip
- (源码)基于Spring Boot和Vue3+ElementPlus的后台管理系统.zip
- (源码)基于C++和Qt框架的dearoot配置管理系统.zip
- (源码)基于 .NET 和 EasyHook 的虚拟文件系统.zip
- (源码)基于Python的金融文档智能分析系统.zip
- (源码)基于Java的医药管理系统.zip
- (源码)基于Java和MySQL的学生信息管理系统.zip
- (源码)基于ASP.NET Core的零售供应链管理系统.zip