public enum FileType {  
    /**  
     * JEPG.  
     */  
    JPEG("FFD8FF"),  
  
    /**  
     * PNG.  
     */  
    PNG("89504E47"),  
  
    /**  
     * GIF.  
     */  
    GIF("47494638"),  
  
    /**  
     * TIFF.  
     */  
    TIFF("49492A00"),  
  
    /**  
     * Windows Bitmap.  
     */  
    BMP("424D"),  
  
    /**  
     * CAD.  
     */  
    DWG("41433130"),  
  
    /**  
     * Adobe Photoshop.  
     */  
    PSD("38425053"),  
  
    /**  
     * Rich Text Format.  
     */  
    RTF("7B5C727466"),  
  
    /**  
     * XML.  
     */  
    XML("3C3F786D6C"),  
  
    /**  
     * HTML.  
     */  
    HTML("68746D6C3E"),  
    /**  
     * CSS.  
     */  
    CSS("48544D4C207B0D0A0942"),  
    /**  
     * JS.  
     */  
    JS("696B2E71623D696B2E71"),  
    /**  
     * Email [thorough only].  
     */  
    EML("44656C69766572792D646174653A"),  
  
    /**  
     * Outlook Express.  
     */  
    DBX("CFAD12FEC5FD746F"),  
  
    /**  
     * Outlook (pst).  
     */  
    PST("2142444E"),  
  
    /**  
     * MS Word/Excel.  
     */  
    XLS_DOC("D0CF11E0"), XLSX_DOCX("504B030414000600080000002100"),  
    /**  
     * Visio  
     */  
    VSD("d0cf11e0a1b11ae10000"),  
    /**  
     * MS Access.  
     */  
    MDB("5374616E64617264204A"),  
    /**  
     * WPS文字wps、表格et、演示dps都是一样的  
     */  
    WPS("d0cf11e0a1b11ae10000"),  
    /**  
     * torrent  
     */  
    TORRENT("6431303A637265617465"),  
    /**  
     * WordPerfect.  
     */  
    WPD("FF575043"),  
  
    /**  
     * Postscript.  
     */  
    EPS("252150532D41646F6265"),  
  
    /**  
     * Adobe Acrobat.  
     */  
    PDF("255044462D312E"),  
  
    /**  
     * Quicken.  
     */  
    QDF("AC9EBD8F"),  
  
    /**  
     * Windows Password.  
     */  
    PWL("E3828596"),  
  
    /**  
     * ZIP Archive.  
     */  
    ZIP("504B0304"),  
  
    /**  
     * RAR Archive.  
     */  
    RAR("52617221"),  
    /**  
     * JSP Archive.  
     */  
    JSP("3C2540207061676520"),  
    /**  
     * JAVA Archive.  
     */  
    JAVA("7061636B61676520"),  
    /**  
     * CLASS Archive.  
     */  
    CLASS("CAFEBABE0000002E00"),  
    /**  
     * JAR Archive.  
     */  
    JAR("504B03040A000000"),  
    /**  
     * MF Archive.  
     */  
    MF("4D616E69666573742D56"),  
    /**  
     *EXE Archive.  
     */  
    EXE("4D5A9000030000000400"),  
    /**  
     *CHM Archive.  
     */  
    CHM("49545346030000006000"),  
    /*  
     * INI("235468697320636F6E66"), SQL("494E5345525420494E54"), BAT(  
     * "406563686F206f66660D"), GZ("1F8B0800000000000000"), PROPERTIES(  
     * "6C6F67346A2E726F6F74"), MXP(  
     * "04000000010000001300"),  
     */  
    /**  
     * Wave.  
     */  
    WAV("57415645"),  
  
    /**  
     * AVI.  
     */  
    AVI("41564920"),  
  
    /**  
     * Real Audio.  
     */  
    RAM("2E7261FD"),  
  
    /**  
     * Real Media.  
     */  
    RM("2E524D46"),  
  
    /**  
     * MPEG (mpg).  
     */  
    MPG("000001BA"),  
  
    /**  
     * Quicktime.  
     */  
    MOV("6D6F6F76"),  
  
    /**  
     * Windows Media.  
     */  
    ASF("3026B2758E66CF11"),  
  
    /**  
     * MIDI.  
     */  
    MID("4D546864"),  
    /**  
     * MP4.  
     */  
    MP4("00000020667479706d70"),  
    /**  
     * MP3.  
     */  s
    MP3("49443303000000002176"),  
    /**  
     * FLV.  
     */  
    FLV("464C5601050000000900");  
    private String value = "";  
  
    /**  
     * Constructor.  
     *   
     * @param type  
     */  
    private FileType(String value) {  
        this.value = value;  
    }  
  
    public String getValue() {  
        return value;  
    }  
  
    public void setValue(String value) {  
        this.value = value;  
    }  
  
}  
 
 
 
 
 
 
public final class FileTypeJudge {  
/** * Constructor */  
private FileTypeJudge() {}  
/** * 将文件头转换成16进制字符串 * * @param 原生byte * @return 16进制字符串 */  
private static String bytesToHexString(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 filePath * 文件路径 * @return 文件头 * @throws IOException */  
private static String getFileContent(String filePath) throws IOException {  
byte[] b = new byte[28];  
InputStream inputStream = null;  
try {  
inputStream = new FileInputStream(filePath);  
inputStream.read(b, 0, 28);  
} catch (IOException e) {  
e.printStackTrace();  
throw e;}  
finally {if (inputStream != null)  
{  
try {inputStream.close();}   
catch (IOException e)   
{e.printStackTrace();throw e;}}}  
return bytesToHexString(b);}  
/** * 判断文件类型 * * @param filePath * 文件路径 * @return 文件类型 */  
public static FileType getType(String filePath) throws IOException {  
String fileHead = getFileContent(filePath);  
if (fileHead == null || fileHead.length() == 0) {  
return null;}fileHead = fileHead.toUpperCase();  
FileType[] fileTypes = FileType.values();  
for (FileType type : fileTypes) {  
if (fileHead.startsWith(type.getValue())) {  
return type;}}return null;}  
public static void main(String args[]) throws Exception {  
System.out.println(FileTypeJudge.getType("d:\\FileMonitor.java"));  
}  
}  

160414、java上传文件以流方式判断类型的更多相关文章

  1. SpringMVC上传文件以流方式判断类型附常用类型

    // 此类中判断类型所截取的byte 长度暂不确定,请使用者测试过使用 package com.tg.common.other; import com.tg.common.tginterface.TG ...

  2. Java上传文件FTP服务器代码

    1. 在实际的应用重,通常是通过程序来进行文件的上传. 2. 实现java上传文件到ftp服务器中 新建maven项目 添加依赖 <dependency> <groupId>c ...

  3. java 上传文件到 ftp 服务器

    1.  java 上传文件到 ftp 服务器 package com.taotao.common.utils; import java.io.File; import java.io.FileInpu ...

  4. java上传文件代码

    import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;impo ...

  5. java上传文件工具类

    这个是之前整理之前所学时与使用java向邮箱发送邮件一块找到的,一起贴出来供大家参考: import java.awt.image.BufferedImage; import java.io.File ...

  6. java 上传文件到七牛云中

    import com.alibaba.fastjson.JSONObject;import com.qiniu.common.QiniuException;import com.qiniu.commo ...

  7. JAVA上传文件到FTP上

    添加maven <!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <dependency> ...

  8. Java上传文件至SFTP服务器

    Windows搭建SFTP服务器 https://www.cnblogs.com/wangjunguang/p/9453611.html 注意点: 1.以管理员权限运行FreeSSHd 2.如果无法启 ...

  9. Java 上传文件到 SFTP 抛异常 java.lang.NoClassDefFoundError: Could not initialize class sun.security.ec.SunEC 的解决办法

    最近从 Op 那里报来一个问题,说是SFTP上传文件不成功.拿到的 Exception 如下: Caused by: java.lang.NoClassDefFoundError: Could not ...

随机推荐

  1. Jquery easyUI datagrid载入复杂JSON数据方法

    1.JSON数据为: {     "total":28, "rows": [     {       "itemNo": "1&q ...

  2. IOS基于XMPP协议开发--XMPPFramewok框架(一):基础知识

    最近蘑菇街团队的TT的开源,使我对im产生了兴趣,然后在网上找到了XMPPFramework进行学习研究, 并写了以下系列教程供大家参考,有写的不对的地方,请大家多多包涵指正. 目录索引 IOS基于X ...

  3. UIWebView和UICollectionViewController的使用

    UIWebView和UICollectionViewController的使用 UIWebView UIWebView是iOS内置的浏览器的控件, 可以浏览网页, 打开文档等 .系统自带的Safari ...

  4. ELK-“线上标准文档”——测试

    Elasticstack官网:https://www.elastic.co 本文档仅限搭建过程参考,使用相关的文档,不在本文档讨论范围之内. 一切依据的核心即是Elasticstack官网. 查看支持 ...

  5. request的生存期只限于服务器跳转

    症状: 刚才想做一个实验,在a.jsp中向request添加属性(页面编码为UTF-8),在b.jsp中删除该属性(页面编码为ISO-8859-1),通过ServletRequestAttribute ...

  6. mouseover mouseenter mouseout mouseleave

    mouseover与mouseenter 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件. 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件. mouseou ...

  7. vuex 定义

    vuex是什么? vuex是一个专为vue.js应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex也集成到vue的官方调试 ...

  8. 使用python对mysql主从进行监控,并调用钉钉发送报警信息

    1.编写python的监控脚本 A.通过获取mysql库中的状态值来判断这个mysql主从状态是否正常 B.进行两个状态值的判断 C.进行调取钉钉机器人,发送消息 2.设置定时任务进行脚本运行 cro ...

  9. 一个通用的JavaScript分页

    1.JavaScript代码 Pagination=function(id) { var totalNum=0; var maxNum=10; var pageUrl=""; va ...

  10. 假设A.jsp内设定一个<jsp:useBean>元素:

    假设A.jsp内设定一个<jsp:useBean>元素: <jsp:useBean id=”bean1” class=”myBean” /> 下列哪一个为真?(选择1项) A. ...