/**
*
*/
package boa.word.poi;
import java.io.File;
import java.io.FileInputStream;
/**
* @author zhangdapeng 2015年1月3日下午4:55:25
*/
public class FileTypeJudge {
public enum FileType {
JPG("FFD8FFE000104A464946"), PNG("89504E470D0A1A0A0000"), GIF("47494638396126026F01"), TIF(
"49492A00227105008037"), BMP16("424D228C010000000000"), // 16色位图(bmp)
BMP24("424D8240090000000000"), // 24位位图(bmp)
BMP256("424D8E1B030000000000"), // 256色位图(bmp)
DWG("41433130313500000000"), HTML("3C21444F435459504520"), HTM("3C21646F637479706520"), CSS(
"48544D4C207B0D0A0942"), JS("696B2E71623D696B2E71"), RTF("7B5C727466315C616E73"), PSD(
"38425053000100000000"), EML("46726F6D3A203D3F6762"), DOC("D0CF11E0A1B11AE10000"), // MS
// Excel、Word、Msi
VSD("D0CF11E0A1B11AE10000"), MDB("5374616E64617264204A"), PDF("255044462D312E350D0A"), RMVB(
"2E524D46000000120001"), // rmvb、rm
FLV("464C5601050000000900"), // flv、f4v
MP4("00000020667479706D70"), MP3("49443303000000002176"), MPG("000001BA210001000180"), WMV(
"3026B2758E66CF11A6D9"), // wmv、asf
WAV("52494646E27807005741"), AVI("52494646D07D60074156"), MID("4D546864000000060001"), ZIP(
"504B0304140000000800"), RAR("526172211A0700CF9073"), INI("235468697320636F6E66"), JAR(
"504B03040A0000000000"), EXE("4D5A9000030000000400"), JSP("3C25402070616765206C"), MF(
"4D616E69666573742D56"), XML("3C3F786D6C2076657273"), SQL("494E5345525420494E54"), JAVA(
"7061636B616765207765"), BAT("406563686F206F66660D"), GZ("1F8B0800000000000000"), PROPERTIES(
"6C6F67346A2E726F6F74"), CLASS("CAFEBABE0000002E0041"), CHM("49545346030000006000"), MXP(
"04000000010000001300"), DOCX("504B0304140006000800"), WPS("D0CF11E0A1B11AE10000"), // WPS(wps、et、dps)
TORRENT("6431303A637265617465"), MOV("6D6F6F76"), WPD("FF575043"), DBX("CFAD12FEC5FD746F"), PST("2142444E"), QDF(
"AC9EBD8F"), PWL("E3828596"), RAM("2E7261FD");
private String value = "";
private FileType(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
private FileTypeJudge() {
}
/**
* 得到上传文件的16进制文件头
*
* @param src
* @return
*/
private static String bytesToHex(byte[] src) {
StringBuilder stringBuilder = new StringBuilder();
if (src==null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}
/**
* 获取文件类型
* @param path
* @return
* @throws Exception
*/
public static FileType getFileType(String path) throws Exception {
File file=new File(path);
FileInputStream fis = new FileInputStream(file);
byte[] b = new byte[10];
fis.read(b, 0, b.length);
fis.close();
String fileCode = bytesToHex(b);
FileType[] fileTypes = FileType.values();
for (FileType type : fileTypes) {
if (fileCode.toUpperCase().startsWith(type.getValue().trim())) {
return type;
}
}
return null;
}
public static void main(String[] args) throws Exception {
System.out.println(FileTypeJudge.getFileType("C:\\Users\\Boa\\Desktop\\test\\test.docx"));
}
}