前面贴过Android系统内部的MediaFile类来获取文件类型的办法,这个类主要是根据文件的扩展名来判断,其准确性不是很好。具体可查看Android系统使用MediaFile类判断音频文件类型。其实,获取文件类型最好的办法便是根据文件头信息来判断。下面贴出相关代码:

public class FileType {

public static final HashMap mFileTypes = new HashMap();

static {

//images

mFileTypes.put("FFD8FF", "jpg");

mFileTypes.put("89504E47", "png");

mFileTypes.put("47494638", "gif");

mFileTypes.put("49492A00", "tif");

mFileTypes.put("424D", "bmp");

//

mFileTypes.put("41433130", "dwg"); //CAD

mFileTypes.put("38425053", "psd");

mFileTypes.put("7B5C727466", "rtf"); //日记本

mFileTypes.put("3C3F786D6C", "xml");

mFileTypes.put("68746D6C3E", "html");

mFileTypes.put("44656C69766572792D646174653A", "eml"); //邮件

mFileTypes.put("D0CF11E0", "doc");

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

mFileTypes.put("252150532D41646F6265", "ps");

mFileTypes.put("255044462D312E", "pdf");

mFileTypes.put("504B0304", "zip");

mFileTypes.put("52617221", "rar");

mFileTypes.put("57415645", "wav");

mFileTypes.put("41564920", "avi");

mFileTypes.put("2E524D46", "rm");

mFileTypes.put("000001BA", "mpg");

mFileTypes.put("000001B3", "mpg");

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

mFileTypes.put("3026B2758E66CF11", "asf");

mFileTypes.put("4D546864", "mid");

mFileTypes.put("1F8B08", "gz");

mFileTypes.put("", "");

mFileTypes.put("", "");

}

public static String getFileType(String filePath) {

return mFileTypes.get(getFileHeader(filePath));

}

//获取文件头信息

public static String getFileHeader(String filePath) {

FileInputStream is = null;

String value = null;

try {

is = new FileInputStream(filePath);

byte[] b = new byte[3];

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

value = bytesToHexString(b);

} catch (Exception e) {

} finally {

if(null != is) {

try {

is.close();

} catch (IOException e) {}

}

}

return value;

}

private static String bytesToHexString(byte[] src){

StringBuilder builder = new StringBuilder();

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

return null;

}

String hv;

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

hv = Integer.toHexString(src[i] & 0xFF).toUpperCase();

if (hv.length() < 2) {

builder.append(0);

}

builder.append(hv);

}

return builder.toString();

}

public static void main(String[] args) throws Exception {

final String fileType = getFileType("D:/apache-tomcat-6.0.35.tar.gz");

System.out.println(fileType);

}

}

java file 获取文件类型_Android中Java根据文件头获取文件类型相关推荐

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

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

  2. java判断文件头_java通过文件头来判断文件类型

    importjava.io.FileInputStream;importjava.io.IOException;importjava.util.HashMap;importjava.util.Map. ...

  3. python 通过文件头获取文件类型mimetype

    一.MIME Type是什么? 资源的媒体类型 MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型.是设定某种扩展名的文件用一种应用程序打开 ...

  4. 根据文件头判断文件真实类型,让更改后缀的文件无所遁形!

    MultipartFile转为File package cn.com.ebidding.web.file.util; import org.springframework.web.multipart. ...

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

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

  6. mysql文件头标记_PHP根据文件头检测文件类型

    文件签名一般都在文件的头部,如果你用十六进制方式查看文件,你就可以看到文件的一些签名信息.如用uestudio以十六进制方式查看zip格式的文件,其文件内容头部有50 4B 03 04这样的十六进制信 ...

  7. python文件名按数字排序_用Python按照文件的名字中包含的数字排序出文件

    使用Python按照文件的名字中包含的数字排序出文件 原来的样式: file_list = ['第10周成绩.xlsx', '第11周成绩.xlsx', '第12周成绩.xlsx', '第13周成绩. ...

  8. 【CTF杂项】常见文件文件头文件尾格式总结及各类文件头

    文件头文件尾总结 JPEG (jpg),                         文件头:FFD8FF 文件尾:FF D9 PNG (png),                         ...

  9. 常见的文件头、文件尾

    在这分享下常见的文件头和文件尾吧: type 文件头 文件尾 JPEG (jpg) FF D8 FF FF D9 PNG (png) 89 50 4E 47 AE 42 60 82 GIF (gif) ...

最新文章

  1. 词向量, BERT, ALBERT, XLNet全面解析(ALBERT第一作者亲自讲解)
  2. Java中获取路径的各种方法
  3. python 模拟微信浏览器请求_使用Chrome修改user agent模拟微信内置浏览器
  4. 智能手环功能模块设计_基于STM32实现智能手环设计
  5. .NET Core开发日志——配置
  6. 【Linux环境】简单Shell脚本实现定时备份文件、压缩、删除超时文件操作(showDoc文件备份脚本举例)
  7. OpenCV展开二维相位图
  8. Mybatis之占位符与拼接符
  9. 通用印刷体文字识别_印刷体文字识别(汉字)中文符的分割
  10. Skyline软件二次开发初级——1如何在web页面中添加控件和加载三维地图数据
  11. 聚观早报 | 华为官宣新机Pocket S;苹果旗舰店开售智能门锁
  12. linux kettle运行作业,kettle之linux使用kettle
  13. 中间状态+三方预约下单接口测试项目
  14. CF1442D Sum 分治 背包dp
  15. 16S rRNArDNA测序分析
  16. MATLAB实现最小二乘法
  17. NSSCTF Round#4 Web WP
  18. Qt5.6.3交叉编译
  19. 【转】STL之父访谈录
  20. AIOT OS设计思考

热门文章

  1. 网易云信投身远程医疗「超高清时代」,让优质医疗惠及更多人
  2. 下载到的电子书格式是Mobi,这种格式能否在手机上打开?
  3. java面试题(记录与分享)二
  4. 每天学一点英文:Espresso 20210811
  5. 用 Adobe 设置 PDF 文件在文件管理器右侧预览窗格预览
  6. MacOS查找各Python版本的路径
  7. 微星RTX 4090和RTX 4080 SUPRIM参数对比评测
  8. 基于loongnix20系统,libvlc代码直接集成测试
  9. 倒谱法的基因周期检测matlab,两种基音周期检测方法
  10. 学服务端(git高级)的第3天