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. atitit.attilax.com产品 软件项目通用框架类库总结

    atitit.attilax.com产品页面 1. 微信公众号后台服务系统 1 2. 视频图文发布与点播系统 1 3. 图片验证码自动识别 2 4. 手机短信验证码自动识别 2 5. 爬虫,数据采集, ...

  2. Atitit.国际化中的日期与钱符号问题

    Atitit.国际化中的日期与钱符号问题 1. 用户名注册的问题 1 1.1. 不能限制用户名长度与特殊符号 1 2. 2.8月7号未必总写成8/7,有时也用7/8 2 3. 5.$未必总是指美元 3 ...

  3. 【Android】15.3 Notification基础知识

    分类:C#.Android.VS2015: 创建日期:2016-02-29 一.如何向用户发出通知 1.使用Toast通知用户 前台任务中的通知(Notifications)一般用于长时间显示用户正在 ...

  4. UIView总结

    转自:http://langhua9527.iteye.com/blog/1377741 如果想调用某个类的某个方法可以写成这样,这个方法来自NSObject类 performSelector: pe ...

  5. libvirt网络过滤规则简单总结

    libvirt网络过滤规则, 一个过滤规则定义的示例: < filter name='no-ip-spoold'chain='ipv4' >  < uuid >fce8ae33 ...

  6. 查询ip地址归属地

    查询ip地址归属地方法: curl ip.cn/$ip 如果没有返回,试试地址写全: curl https://www.ip.cn/$ip 如:

  7. Nokia Imaging SDK 的高级使用—实时滤镜拍照

    有关 Nokia Imaging SDK 的初级使用,可以参考:Nokia Imaging SDK滤镜使用入门 本文的主题: 1.如何 PhotoCaptureDevice 类使用,以及如何在 Med ...

  8. 远程登录linux上的mysql数据库

    UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1; 讲root账户,的HOST设置为%,允许所有公网IP访问. flush priv ...

  9. JS四种方法去除字符串最后的逗号

    <script> window.onload=function() { var obj = {name: "xxx", age: 30, sex: "fema ...

  10. StringJDBC更改数据库的两种方式

    方法一jdbcTemplate.update("INSERT INTO USER VALUES(?, ?, ?, ?)", new Object[] {user.getId(), ...