标签:FileTypeEnum Java String value 后缀名 文件格式 文件类型 return public
用非后缀名方式判断文件类型,文件格式,使用的业务场景不再详细描述了,直接上实现方法(使用者可以进行优化改造);
1、创建文件类型枚举:
pack<a href="https://www.gaodaima.com/tag/age" title="查看更多关于age的文章" target="_blank">age</a> com.shsnc.d<a href="https://www.gaodaima.com/tag/bt" title="查看更多关于bt的文章" target="_blank">bt</a>demo.common.enums;<br>/**<br> * 文件类型枚举(部分为自定义类型)<br> *<br> * @author klp<br> * @date 2022-06-24<br> */<br>public enum FileTypeEnum {<br> /**<br> * JEPG.<br> */<br> JPEG("FFD8FF"),<br><br> /**<br> * PNG.<br> */<br> PNG("89504E47"),<br><br> /**<br> * GIF.<br> */<br> GIF("47494638"),<br><br> /**<br> * TIFF.<br> */<br> TIFF("49492A00"),<br> /**<br> * RTF.<br> */<br> RTF("7B5C727466"),<br> /**<br> * DOC<br> */<br> DOC("D0CF11E0"),<br> /**<br> * XLS<br> */<br> XLS("D0CF11E0"),<br> /**<br> * ACCESS<br> */<br> MDB("5374616E64617264204A"),<br> /**<br> * WordPerfect<br> */<br> WPD("FF575043"),<br><br> /**<br> * WordPerfect<br> */<br> EPS("252150532D41646F6265"),<br> /**<br> * PS<br> */<br> PS("252150532D41646F6265"),<br> /**<br> * Windows Bitmap.<br> */<br> BMP("424D"),<br><br> /**<br> * CAD.<br> */<br> DWG("41433130"),<br><br> /**<br> * Adobe Photoshop.<br> */<br> PSD("38425053"),<br> /**<br> * Email [thorough only]<br> */<br> EML("44656C69766572792D646174653A"),<br> /**<br> * XML.<br> */<br> XML("3C3F786D6C"),<br> /**<br> * Outlook Express<br> */<br> DBX("CFAD12FEC5FD746F"),<br> /**<br> * Outlook<br> */<br> PST("2142444E"),<br> /**<br> * office类型,包括doc、xls和ppt<br> */<br> OFFICE("D0CF11E0"),<br> /**<br> * HTML.<br> */<br> HTML("68746D6C3E"),<br><br> /**<br> * Adobe Acrobat.<br> */<br> PDF("255044462D312E"),<br><br> /**<br> * Quicken<br> */<br> QDF("AC9EBD8F"),<br> /**<br> * Windows Password<br> */<br> PWL("E3828596"),<br><br> /**<br> * ZIP Archive.<br> */<br> ZIP("504B0304"),<br><br> /**<br> * RAR Archive.<br> */<br> RAR("52617221"),<br><br> /**<br> * Wave.<br> */<br> WAV("57415645"),<br><br> /**<br> * AVI.<br> */<br> AVI("41564920"),<br> /**<br> * Real Audio<br> */<br> RAM("2E7261FD"),<br> /**<br> * Real Media<br> */<br> RM("2E524D46"),<br> /**<br> * MPG<br> */<br> MPG("000001BA"),<br> /**<br> * Quicktime<br> */<br> MOV("6D6F6F76"),<br> /**<br> * Windows Media<br> */<br> ASF("3026B2758E66CF11"),<br> /**<br> * MIDI (mid)<br> */<br> MID("4D546864"),<br> /**<br> * EXE<br> */<br> EXE("4d5a");<br> private String value = "";<br> /**<br> * Constructor.<br> *<br> * @param value<br> */<br> private FileTypeEnum(String value) {<br> this.value = value;<br> }<br> public String getValue() {<br> return value;<br> }<br> public void setValue(String value) {<br> this.value = value;<br> }<br>}<br><br>
2、判断方法:
/**<br> * 检查文件类型<br> *<br> * @param inputStream<br> * @return<br> * @throws IOException<br> */<br>public static boolean checkFileType(InputStream inputStream) throws IOException {<br> byte[] b = new byte[28];//这里需要注意的是,每个文件的magic word的长度都不相同,因此需要使用startwith<br> inputStream.read(b, 0, 28);<br> inputStream.close();<br> String fileHead = bytes2hex(b);<br> fileHead = fileHead.toUpperCase();<br> FileTypeEnum[] fileTypeEnums = FileTypeEnum.values();<br> for (FileTypeEnum type : fileTypeEnums) {<br> if (fileHead.startsWith(type.getValue())) {<br> return true;<br> }<br> }<br> return false;<br>}<br><br>
/**<br> * 二进制转化为16进制<br> */<br>private static String bytes2hex(byte[] bytes) {<br> StringBuilder hex = new StringBuilder();<br> for (int i = 0; i < bytes.length; i++) {<br> String temp = Integer.toHexString(bytes[i] & 0xFF);<br> if (temp.length() == 1) {<br> hex.append("0");<br> }<br> hex.append(temp.toLowerCase());<br> }<br> return hex.toString();<br>}<br><br><br>
标签:FileTypeEnum,Java,String,value,后缀名,文件格式,文件类型,return,public
来源: https://www.cnblogs.com/haidaogege/p/16409989.html