中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

文件的真實類型如何利用java進行判斷

發布時間:2020-12-02 15:09:44 來源:億速云 閱讀:163 作者:Leah 欄目:編程語言

文件的真實類型如何利用java進行判斷?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

具體代碼如下:

package com.zhuifeng.util.excel; 
 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.util.HashMap; 
 
/** 
 * @author guoxk 
 * 
 * 類描述:獲取和判斷文件頭信息 
 *  |--文件頭是位于文件開頭的一段承擔一定任務的數據,一般都在開頭的部分。 
 *  |--頭文件作為一種包含功能函數、數據接口聲明的載體文件,用于保存程序的聲明(declaration),而定義文件用于保存程序的實現(implementation)。 
 *  |--為了解決在用戶上傳文件的時候在服務器端判斷文件類型的問題,故用獲取文件頭的方式,直接讀取文件的前幾個字節,來判斷上傳文件是否符合格式。 
 * 
 */ 
public class CheckExcelFileTypeUtil { 
  // 緩存文件頭信息-文件頭信息 
  public static final HashMap<String, String> mFileTypes = new HashMap<String, String>(); 
  static { 
    // images 
    mFileTypes.put("FFD8FF", "jpg"); 
    mFileTypes.put("89504E47", "png"); 
    mFileTypes.put("47494638", "gif"); 
    mFileTypes.put("49492A00", "tif"); 
    mFileTypes.put("424D", "bmp"); 
    // 
    mFileTypes.put("41433130", "dwg"); // CAD 
    mFileTypes.put("38425053", "psd"); 
    mFileTypes.put("7B5C727466", "rtf"); // 日記本 
    mFileTypes.put("3C3F786D6C", "xml"); 
    mFileTypes.put("68746D6C3E", "html"); 
    mFileTypes.put("44656C69766572792D646174653A", "eml"); // 郵件 
    mFileTypes.put("D0CF11E0", "doc"); 
    mFileTypes.put("D0CF11E0", "xls");//excel2003版本文件 
    mFileTypes.put("5374616E64617264204A", "mdb"); 
    mFileTypes.put("252150532D41646F6265", "ps"); 
    mFileTypes.put("255044462D312E", "pdf"); 
    mFileTypes.put("504B0304", "docx"); 
    mFileTypes.put("504B0304", "xlsx");//excel2007以上版本文件 
    mFileTypes.put("52617221", "rar"); 
    mFileTypes.put("57415645", "wav"); 
    mFileTypes.put("41564920", "avi"); 
    mFileTypes.put("2E524D46", "rm"); 
    mFileTypes.put("000001BA", "mpg"); 
    mFileTypes.put("000001B3", "mpg"); 
    mFileTypes.put("6D6F6F76", "mov"); 
    mFileTypes.put("3026B2758E66CF11", "asf"); 
    mFileTypes.put("4D546864", "mid"); 
    mFileTypes.put("1F8B08", "gz"); 
  } 
 
  /** 
   * @author guoxk 
   * 
   * 方法描述:根據文件路徑獲取文件頭信息 
   * @param filePath 文件路徑 
   * @return 文件頭信息 
   */ 
  public static String getFileType(String filePath) { 
//   System.out.println(getFileHeader(filePath)); 
//   System.out.println(mFileTypes.get(getFileHeader(filePath))); 
    return mFileTypes.get(getFileHeader(filePath)); 
  } 
 
  /** 
   * @author guoxk 
   * 
   * 方法描述:根據文件路徑獲取文件頭信息 
   * @param filePath 文件路徑 
   * @return 文件頭信息 
   */ 
  public static String getFileHeader(String filePath) { 
    FileInputStream is = null; 
    String value = null; 
    try { 
      is = new FileInputStream(filePath); 
      byte[] b = new byte[4]; 
      /* 
       * int read() 從此輸入流中讀取一個數據字節。int read(byte[] b) 從此輸入流中將最多 b.length 
       * 個字節的數據讀入一個 byte 數組中。 int read(byte[] b, int off, int len) 
       * 從此輸入流中將最多 len 個字節的數據讀入一個 byte 數組中。 
       */ 
      is.read(b, 0, b.length); 
      value = bytesToHexString(b); 
    } catch (Exception e) { 
    } finally { 
      if (null != is) { 
        try { 
          is.close(); 
        } catch (IOException e) { 
        } 
      } 
    } 
    return value; 
  } 
 
  /** 
   * @author guoxk 
   * 
   * 方法描述:將要讀取文件頭信息的文件的byte數組轉換成string類型表示 
   * @param src 要讀取文件頭信息的文件的byte數組 
   * @return  文件頭信息 
   */ 
  private static String bytesToHexString(byte[] src) { 
    StringBuilder builder = new StringBuilder(); 
    if (src == null || src.length <= 0) { 
      return null; 
    } 
    String hv; 
    for (int i = 0; i < src.length; i++) { 
      // 以十六進制(基數 16)無符號整數形式返回一個整數參數的字符串表示形式,并轉換為大寫 
      hv = Integer.toHexString(src[i] & 0xFF).toUpperCase(); 
      if (hv.length() < 2) { 
        builder.append(0); 
      } 
      builder.append(hv); 
    } 
//   System.out.println(builder.toString()); 
    return builder.toString(); 
  } 
  /** 
   * @author guoxk 
   * 
   * 方法描述:測試 
   * @param args 
   * @throws Exception 
   */ 
  public static void main(String[] args) throws Exception { 
    final String fileType = getFileType("E:\\補貼名單.xls"); 
    System.out.println(fileType); 
  }}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长乐市| 台中市| 雷波县| 肥乡县| 庄河市| 乐清市| 冀州市| 民丰县| 安阳县| 宁河县| 景宁| 老河口市| 沈阳市| 札达县| 麻阳| 尚义县| 汉寿县| 昌平区| 邵武市| 昌宁县| 黎平县| 塔城市| 五台县| 通州市| 亳州市| 嵊州市| 绍兴市| 台中市| 绵竹市| 建德市| 湖南省| 齐齐哈尔市| 宁阳县| 兴城市| 和静县| 息烽县| 界首市| 昌江| 神农架林区| 祁门县| 陇南市|