前面贴过Android系统内部的MediaFile类来获取文件类型的办法,这个类主要是根据文件的扩展名来判断,其准确性不是很好。具体可查看Android系统使用MediaFile类判断音频文件类型。其实,获取文件类型最好的办法便是根据文件头信息来判断。下面贴出相关代码:
public class FileType {  
public static final HashMap<String, String> mFileTypes = new HashMap<String, String>();
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);  
}  
}

Android中Java根据文件头获取文件类型相关推荐

  1. java file 获取文件类型_Android中Java根据文件头获取文件类型

    前面贴过Android系统内部的MediaFile类来获取文件类型的办法,这个类主要是根据文件的扩展名来判断,其准确性不是很好.具体可查看Android系统使用MediaFile类判断音频文件类型.其 ...

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

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

  3. java:根据文件头来判断文件类型

    根据文件后缀来判断文件类型,往往是不靠谱的,因为要考虑到,可能人为的更改文件后缀,导致一些问题. 因此,下面是详细的根据文件头信息来判断文件类型. 文件头的十六进制以后继续补充. package co ...

  4. curl mimetype类型_根据二进制流及文件头获取文件类型mime-type

    图片格式查看: 用十六进制编辑器察看过图片的文件头,分析的结果,供大家参考: 1.JPEG/JPG - 文件头标识 (2 bytes): $ff, $d8 (SOI) (JPEG 文件标识) - 文件 ...

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

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

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

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

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

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

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

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

  9. java文件头_Java根据文件头判断文件类型

    public class FileType { private final static Map FILE_TYPE_MAP = new HashMap(); private FileType(){} ...

  10. java根据远程URL获取文件类型

    通过给定url中获取文件文件类型,开始想到的方法是通过在url中切割获取,如以下url,可以通过切割字符串的方式获取到文件类型是jpg格式的: http://bpic.588ku.com/elemen ...

最新文章

  1. Windows下创建动态库
  2. 说下js中的bind
  3. 表达式_关系式_关系表达式_比较表达式
  4. docker导入与导出容器
  5. (Deep learning)深度卷积网络实战——第三部分
  6. jQuery 生成随机字符
  7. Css绝对定位position
  8. 99元紫米10000mAh移动电源开箱拆解
  9. JAVA 垃圾回收
  10. Navicat连接腾讯服务器时常见错误
  11. 学Linux有哪些就业方向?
  12. 他博士毕业论文写了1255页,28岁评教授,38岁当院士!
  13. 开机上报树梅派2的IP地址到邮箱
  14. 三年一跳槽、拒绝“唯学历”,火速 Get 这份程序员求生指南!
  15. 多个label,可变长情况下使用Masonry
  16. 几何原本译林pdf下载_《几何原本》欧几里得_文字版_pdf电子书下载
  17. Java实现AES工具类(包含CBC和ECB)
  18. 2021.5.22 2022蓝桥杯练习赛3
  19. Windows下连接RTL-SDR直接使用命令听FM广播
  20. 使用Ollydbg破解注册机的两种套路

热门文章

  1. react 引入轮播插件_如何在react中引入swiper滑动插件
  2. 拜托!HTML渲染background-image的时候,url请一定加上‘ ‘(单引号)
  3. JavaWeb 基础系列篇
  4. Java:Spring @Transactional工作原理
  5. Mybatis动态sql及性能优化-3
  6. 【BZOJ4956】Secret Chamber at Mount Rushmore
  7. 树状数组---Squared Permutation
  8. 第15届创新英语大赛初赛第二阶段题目
  9. Pascal数据结构与算法
  10. ubuntu 10.04下vmware tools安装和一些应用