文件头部两个字节判断文件类型 - litonghui/TechBlog GitHub Wiki
对于文件类型的判断有很多种,简单的方式靠后缀,推荐一种可靠的方式,通过文件头部两个字节判断文件真实类型,方法如下参考1:
public static String fileType(File file) {
//文件类型
String fileType = "";
try {
FileInputStream inputStream = new FileInputStream(file);
byte[] buffer = new byte[2];
//文件类型代码
String filecode = "";
//通过读取出来的前两个字节来判断文件类型
if (inputStream.read(buffer) != -1) {
for (int i = 0; i < buffer.length; i++) {
//获取每个字节与0xFF进行与运算来获取高位,这个读取出来的数据不是出现负数,转换成字符串
filecode += Integer.toString((buffer[i] & 0xFF));
}
// 把字符串再转换成Integer进行类型判断
switch (Integer.parseInt(filecode)) {
case 7790:
fileType = "exe";
break;
case 7784:
fileType = "midi";
break;
case 8297:
fileType = "rar";
break;
case 8075:
fileType = "zip";
break;
case 255216:
fileType = "jpg";
break;
case 7173:
fileType = "gif";
break;
case 6677:
fileType = "bmp";
break;
case 13780:
fileType = "png";
break;
default:
fileType = "unknown";
break;
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return fileType;
}