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. unity, destroy gameObject & destroy all children

    一,destroy gameObject 删除名为xxx的gameObject 错误方法1: Destroy(xxx); 以上方法之所以错误,是因为Destroy在下一帧才生效,而在本帧之内xxx还存 ...

  2. linux kill 关闭进程命令

    杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志. 首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令: # kill -pid 注释:标准的kill命令通常都能达到目的 ...

  3. Nginx、PCRE和中文URL(UTF8编码)rewrite路径重写匹配问题

    最近遇到了使用Nginx 重写中文UTF8编码路径的问题. 才发现默认情况下Nginx的rewrite是不支持UTF8匹配的. 比如: rewrite ^/(..)$ /2个字符文章.html bre ...

  4. 02、Universal app 中按钮图标使用

    前言,windows10 昨天凌晨发布了,windows store 开发模型比以前的 silverlight 模型由很多优势, 我也小兴奋了一把. 正文: 在 windows phone 8.0 以 ...

  5. Linux系统下Shell命令行快捷键实用技巧

    # Ctrl + A# Ctrl + E切到命令行开始|结尾 # esc+f往右跳一个词# esc+b往左跳一个词 # Ctrl + W清除光标之前一个单词# esc + d 删除光标后的一个词 # ...

  6. Hadoop默认端口表及用途

      端口 用途 9000 fs.defaultFS,如:hdfs://172.25.40.171:9000 9001 dfs.namenode.rpc-address,DataNode会连接这个端口 ...

  7. Windows Phone实用教程:利用Blend为程序添加设计时数据

    [前言] Blend自诞生那一天起就伴随这开发者如此的评价: 有VS还用Blend干啥,直接码代码就好了. Blend会生成一堆垃圾无用代码,很不爽. 对于这类我只会在心里评价,当你并不真正了解一样事 ...

  8. scala flatMap reduceLeft foldLeft

    object collection_t1 { def flatMap1(): Unit = { val li = List(,,) val res = li.flatMap(x => x mat ...

  9. 京东阅读PDF导出

    适用平台:windows 需要软件:FastStone Capture(截图软件),TinyTask(操作录制软件) 1.打开京东阅读 2.设置截图软件 (1)设置截图区域(FastStone Cap ...

  10. imx6 18bit display

    imx6 kernel中使用18bit的lcd,uboot中bootargs参数bpp=32,lcd才能够正常显示. "bootargs=console=ttymxc0,115200 ini ...