博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java文件上传,自动判断文件类型
阅读量:5817 次
发布时间:2019-06-18

本文共 8917 字,大约阅读时间需要 29 分钟。

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(InputStream is) throws IOException {            byte[] b = new byte[28];            InputStream inputStream = null;            try {              is.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(InputStream is) throws IOException {            String fileHead = getFileContent(is);          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;      }      /**     *      * @param value 表示文件类型     * @return 1 表示图片,2 表示文档,3 表示视频,4 表示种子,5 表示音乐,6 表示其它     * @return     */    public static Integer isFileType(FileType value) {          Integer type = 6;// 其他          // 图片          FileType[] pics = { FileType.JPEG, FileType.PNG, FileType.GIF, FileType.TIFF, FileType.BMP, FileType.DWG, FileType.PSD };            FileType[] docs = { FileType.RTF, FileType.XML, FileType.HTML, FileType.CSS, FileType.JS, FileType.EML, FileType.DBX, FileType.PST, FileType.XLS_DOC, FileType.XLSX_DOCX, FileType.VSD,                  FileType.MDB, FileType.WPS, FileType.WPD, FileType.EPS, FileType.PDF, FileType.QDF, FileType.PWL, FileType.ZIP, FileType.RAR, FileType.JSP, FileType.JAVA, FileType.CLASS,                  FileType.JAR, FileType.MF, FileType.EXE, FileType.CHM };            FileType[] videos = { FileType.AVI, FileType.RAM, FileType.RM, FileType.MPG, FileType.MOV, FileType.ASF, FileType.MP4, FileType.FLV, FileType.MID };            FileType[] tottents = { FileType.TORRENT };            FileType[] audios = { FileType.WAV, FileType.MP3 };            FileType[] others = {};            // 图片          for (FileType fileType : pics) {              if (fileType.equals(value)) {                  type = 1;              }          }          // 文档          for (FileType fileType : docs) {              if (fileType.equals(value)) {                  type = 2;              }          }          // 视频          for (FileType fileType : videos) {              if (fileType.equals(value)) {                  type = 3;              }          }          // 种子          for (FileType fileType : tottents) {              if (fileType.equals(value)) {                  type = 4;              }          }          // 音乐          for (FileType fileType : audios) {              if (fileType.equals(value)) {                  type = 5;              }          }          return type;      }        public static void main(String args[]) throws Exception {           System.out.println(                 FileTypeJudge.isFileType(                         FileTypeJudge.getType(                                 new FileInputStream(                                         new File("C:\\Users\\ituser1\\Desktop\\123.pptx")))));        for (FileType type : FileType.values()) {              System.out.print(type + "\t");          }      }  }

 

转载于:https://www.cnblogs.com/zktww/p/10388098.html

你可能感兴趣的文章
IntelliJ IDEA解决Tomcal启动报错
查看>>
默认虚拟主机设置
查看>>
php中的短标签 太坑人了
查看>>
[译] 可维护的 ETL:使管道更容易支持和扩展的技巧
查看>>
### 继承 ###
查看>>
数组扩展方法之求和
查看>>
astah-professional-7_2_0安装
查看>>
函数是对象-有属性有方法
查看>>
uva 10107 - What is the Median?
查看>>
Linux下基本栈溢出攻击【转】
查看>>
c# 连等算式都在做什么
查看>>
使用c:forEach 控制5个换行
查看>>
java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试...
查看>>
使用ansible工具部署ceph
查看>>
linux系列博文---->深入理解linux启动运行原理(一)
查看>>
Android反编译(一) 之反编译JAVA源码
查看>>
结合当前公司发展情况,技术团队情况,设计一个适合的技术团队绩效考核机制...
查看>>
python-45: opener 的使用
查看>>
cad图纸转换完成的pdf格式模糊应该如何操作?
查看>>
Struts2与Struts1区别
查看>>