最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)的獲取和判斷文件頭信息工具類用法示例

 更新時(shí)間:2017年11月15日 14:57:11   作者:yunshouhu  
這篇文章主要介紹了Java實(shí)現(xiàn)的獲取和判斷文件頭信息工具類,結(jié)合實(shí)例形式分析了Java針對(duì)文件讀取及頭信息判斷相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Java實(shí)現(xiàn)的獲取和判斷文件頭信息工具類用法。分享給大家供大家參考,具體如下:

package test;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
/**
 * 獲取和判斷文件頭信息
 *
 * @author Sud
 *
 */
public class GetTypeByHead {
  // 緩存文件頭信息-文件頭信息
  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("5374616E64617264204A", "mdb");
    mFileTypes.put("252150532D41646F6265", "ps");
    mFileTypes.put("255044462D312E", "pdf");
    mFileTypes.put("504B0304", "docx");
    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");
    mFileTypes.put("4D5A9000", "exe/dll");
    mFileTypes.put("75736167", "txt");
  }
  /**
   * 根據(jù)文件路徑獲取文件頭信息
   *
   * @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));
  }
  /**
   * 根據(jù)文件路徑獲取文件頭信息
   *
   * @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() 從此輸入流中讀取一個(gè)數(shù)據(jù)字節(jié)。 int read(byte[] b) 從此輸入流中將最多 b.length
       * 個(gè)字節(jié)的數(shù)據(jù)讀入一個(gè) byte 數(shù)組中。 int read(byte[] b, int off, int len)
       * 從此輸入流中將最多 len 個(gè)字節(jié)的數(shù)據(jù)讀入一個(gè) byte 數(shù)組中。
       */
      is.read(b, 0, b.length);
      value = bytesToHexString(b);
    } catch (Exception e) {
    } finally {
      if (null != is) {
        try {
          is.close();
        } catch (IOException e) {
        }
      }
    }
    return value;
  }
  /**
   * 將要讀取文件頭信息的文件的byte數(shù)組轉(zhuǎn)換成string類型表示
   *
   * @param src
   *      要讀取文件頭信息的文件的byte數(shù)組
   * @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++) {
      // 以十六進(jìn)制(基數(shù) 16)無(wú)符號(hào)整數(shù)形式返回一個(gè)整數(shù)參數(shù)的字符串表示形式,并轉(zhuǎn)換為大寫(xiě)
      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();
  }
  public static void main(String[] args) throws Exception {
    System.out.println("腳本之家測(cè)試結(jié)果:");
    final String fileType = getFileType("D:\\php5ts.dll");
    System.out.println(fileType);
  }
}

運(yùn)行結(jié)果:

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java文件與目錄操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 使用maven-assembly-plugin如何將system 依賴范圍的jar以class 方式打包進(jìn) jar包中

    使用maven-assembly-plugin如何將system 依賴范圍的jar以class 方式

    這篇文章主要介紹了使用maven-assembly-plugin如何將system 依賴范圍的jar以class 方式打包進(jìn) jar包中,本文給大家分享完美解決思路,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Proxy實(shí)現(xiàn)AOP切面編程案例

    Proxy實(shí)現(xiàn)AOP切面編程案例

    這篇文章主要介紹了Proxy實(shí)現(xiàn)AOP切面編程案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • SpringBoot集成WebSocket的兩種方式(JDK內(nèi)置版和Spring封裝版)

    SpringBoot集成WebSocket的兩種方式(JDK內(nèi)置版和Spring封裝版)

    這篇文章主要介紹了SpringBoot集成WebSocket的兩種方式,這兩種方式為JDK內(nèi)置版和Spring封裝版,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • ScrollView中嵌入ListView只顯示一條的解決辦法

    ScrollView中嵌入ListView只顯示一條的解決辦法

    在ScrollView添加一個(gè)ListView會(huì)導(dǎo)致listview控件顯示不全,通常只會(huì)顯示一條,究竟是什么原因呢?下面腳本之家小編給大家介紹ScrollView中嵌入ListView只顯示一條的解決辦法,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • Java正則表達(dá)式API字符類

    Java正則表達(dá)式API字符類

    這篇文章主要介紹了Java正則表達(dá)式API字符類,Java正則表達(dá)式API也接受預(yù)定義的字符類,下面文章內(nèi)容展開(kāi)了更多的相關(guān)內(nèi)容介紹,需要的朋友可以參考一下
    2022-06-06
  • java中sleep方法和wait方法的五個(gè)區(qū)別

    java中sleep方法和wait方法的五個(gè)區(qū)別

    這篇文章主要介紹了java中sleep方法和wait方法的五個(gè)區(qū)別,sleep?方法和?wait?方法都是用來(lái)將線程進(jìn)入休眠狀態(tài),但是又有一些區(qū)別,下面我們就一起來(lái)看看吧
    2022-05-05
  • springboot注解及GET、POST接口寫(xiě)法

    springboot注解及GET、POST接口寫(xiě)法

    springboot提供了@Contrller和@RestController注解,@Controller返回頁(yè)面和數(shù)據(jù)而@RestController返回?cái)?shù)據(jù),本文重點(diǎn)介紹springboot注解及GET、POST接口寫(xiě)法,感興趣的朋友一起看看吧
    2024-04-04
  • Java使用System.currentTimeMillis()方法計(jì)算程序運(yùn)行時(shí)間的示例代碼

    Java使用System.currentTimeMillis()方法計(jì)算程序運(yùn)行時(shí)間的示例代碼

    System.currentTimeMillis() 方法的返回類型為 long ,表示毫秒為單位的當(dāng)前時(shí)間,文中通過(guò)示例代碼介紹了計(jì)算 String 類型與 StringBuilder 類型拼接字符串的耗時(shí)情況,對(duì)Java計(jì)算程序運(yùn)行時(shí)間相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-03-03
  • Spring?@InitBinder注解使用及原理詳解

    Spring?@InitBinder注解使用及原理詳解

    這篇文章主要為大家介紹了Spring?@InitBinder注解使用及原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • SpringBoot中使用Servlet三大組件的方法(Servlet、Filter、Listener)

    SpringBoot中使用Servlet三大組件的方法(Servlet、Filter、Listener)

    這篇文章主要介紹了SpringBoot中使用Servlet三大組件的方法(Servlet、Filter、Listener),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01

最新評(píng)論

甘德县| 屏边| 廉江市| 青阳县| 邵东县| 犍为县| 犍为县| 河源市| 吉林省| 馆陶县| 西吉县| 涪陵区| 夹江县| 保亭| 安化县| 嘉荫县| 奇台县| 涞源县| 克山县| 邵武市| 察隅县| 饶阳县| 玉田县| 奉新县| 庐江县| 淳安县| 佛教| 富锦市| 哈尔滨市| 岳阳县| 龙岩市| 宜兰市| 万山特区| 泽库县| 梓潼县| 湘阴县| 西青区| 芒康县| 南康市| 朝阳区| 正安县|