• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Java 判断文件类型,文件格式,非后缀名的方式

java 佚名 2年前 (2023-03-11) 32次浏览 已收录 0个评论

标签: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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java 判断文件类型,文件格式,非后缀名的方式
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址