java上传文件以流方式判断类型

    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.  
         */  
        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"));  
    }  
    }  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值