java判断检验各种文件类型,通过读取文件头(前4位),可判断gz等格式,代码如下:

import java.io.FileInputStream;

import java.io.IOException;

import java.util.HashMap;

/**

* 获取和判断文件头信息

*

* @author Sud

*

*/

public class GetTypeByHead {

// 缓存文件头信息-文件头信息

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", "docx");

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("4D5A9000", "exe/dll");

mFileTypes.put("75736167", "txt");

}

/**

* 根据文件路径获取文件头信息

*

* @param filePath

* 文件路径

* @return 文件头信息

*/

public static String getFileType(String filePath) {

System.out.println(getFileHeader(filePath));

System.out.println(mFileTypes.get(getFileHeader(filePath)));

return mFileTypes.get(getFileHeader(filePath));

}

/**

* 根据文件路径获取文件头信息

*

* @param filePath

* 文件路径

* @return 文件头信息

*/

public static String getFileHeader(String filePath) {

FileInputStream is = null;

String value = null;

try {

is = new FileInputStream(filePath);

byte[] b = new byte[4];

/*

* int read() 从此输入流中读取一个数据字节。 int read(byte[] b) 从此输入流中将最多 b.length

* 个字节的数据读入一个 byte 数组中。 int read(byte[] b, int off, int len)

* 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。

*/

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

value = bytesToHexString(b);

} catch (Exception e) {

} finally {

if (null != is) {

try {

is.close();

} catch (IOException e) {

}

}

}

return value;

}

/**

* 将要读取文件头信息的文件的byte数组转换成string类型表示

*

* @param src

* 要读取文件头信息的文件的byte数组

* @return 文件头信息

*/

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++) {

// 以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式,并转换为大写

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

if (hv.length() < 2) {

builder.append(0);

}

builder.append(hv);

}

System.out.println(builder.toString());

return builder.toString();

}

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

final String fileType = getFileType("D:\\Ry4S_JAVA.dll");

System.out.println(fileType);

}

}

java判断文件格式_java判断检验各种文件类型,如gz、txt等相关推荐

  1. java校验文件格式_Java 判断文件是否为文本格式,并获取文件编码格式,读取内容!...

    我们经常会遇到读取文件内容的情况,就需要判断文件是否为文本文件,及文件编码格式,防止无法读取内容或乱码出现情况. 根据文件扩展名判定不太准确,可能会遇到未知扩展名或被修改了扩展名,下面的测试类使用文件 ...

  2. java校验文件格式_java验证文件格式工具类(获取文件真实格式)

    , String>();privateVerifyFileType(){} static{ getAllFileType();//初始化文件类型信息} /*** Discription:[get ...

  3. java 时间判断大小_java判断时间大小

    //构造日期格式yyyy-MM-NN SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date d ...

  4. java 指定文件格式_java删除指定目录下指定格式文件的方法

    本文实例为大家分享了java删除指定目录下指定格式文件的具体代码,供大家参考,具体内容如下 正在看疯狂java讲义这本书,发现源码中有我不需要的class文件,想批量把它删除 代码如下: import ...

  5. java文本压缩算法_java 什么算法压缩文件最小

    展开全部 有三种方式实现java压缩: 1.jdk自带的包java.util.zip.ZipOutputStream,不足之处,文件(夹)名称32313133353236313431303231363 ...

  6. java 重命名_Java如何重命名文件?

    在java编程中,如何重命名文件? 此示例演示如何使用File类的oldName.rename To(new_Name)方法重命名文件. package com.yiibai; import java ...

  7. java pdf文件下载_Java后台返回PDF文件预览下载

    Java后台返回PDF文件预览下载 开始的代码的系统代码为: ResponseEntity onePdf = s3Wrapper.download(contractEntity.getContract ...

  8. java 内部变量_java 中的内置数据类型

    1,  基本数据类型 Java是强类型语言, 对于每一种数据都定义了类型,基本数据类型分为数值型,字符型,布尔型.数值型又分为了整型和浮点型. 整型又分为byte, int, short long. ...

  9. java int 运算符_Java 位运算符和 int 类型的实现

    Java 位运算符和 int 类型的实现 其他运算符 # 算术运算符 +.-.*./.++i.i++.--i.i-- # 关系运算符 ==.!=.>.=.<= # 逻辑运算符 && ...

最新文章

  1. 惊艳了!升级版的 APDrawing,秒让人脸照变线条肖像画
  2. hdu2102 水搜索
  3. ThunderSoft Flash to HTML5中文版
  4. php有意思知识分享,分享几个有意思的数组方法
  5. Module.h 网狐的“com”工具箱
  6. 结合电商支付业务一文搞懂DDD
  7. linux df命令功能,Linux df命令简要介绍
  8. 【渝粤题库】广东开放大学 实用文写作 形成性考核
  9. faster-rcnn tensorflow windows python 训练自己数据
  10. 在SqlMapConfig.xml 中typeAliases与properties的关系
  11. IOS UI TabBar标签栏的使用
  12. DT大数据梦工厂视频资源
  13. psd.js 解析PSD文件
  14. python 广告联盟_利用京东联盟API获取自定义推广链接
  15. endnote找不到国标_电动车新国标实施首日,实况如何?遇到这些问题别急!
  16. oracle中栓锁,oracle 闩锁介绍
  17. 要么忍,要么狠,要么滚
  18. Process ID 59:0 owns resources that are blocking processes on Scheduler 2
  19. mac mi 芯片 安装ps
  20. scikit-learn : LASSO

热门文章

  1. 骁龙660_骁龙660处理器性能怎么样 骁龙660处理器性能解析【图解】
  2. java中flatMap用法
  3. The Theory of Physically Based Rendering and Shading
  4. HTML中一些简单常用图形的设计
  5. LakeHouse湖仓一体成为下一站灯塔,数仓、数据湖架构即将退出群聊
  6. 7天物联网智能家居实战训练营学习分享
  7. Java开发环境的安装与卸载
  8. 转:领导力的核心是让每个人得以蓬勃发展
  9. 使用Nunjucks
  10. QCustomPlot设置游标