氟塑料離心泵www.buybeng.com

          jquery教程http://www.software8.co/wzjs/jquery/

          Java根據文件頭獲取文件類型

          文件頭是位于文件開頭的一段承擔一定任務的數據,一般都在開頭的部分。頭文件作為一種包含功能函數、數據接口聲明的載體文件,用于保存程序的聲明(declaration),而定義文件用于保存程序的實現 (implementation)。 
               為了解決在用戶上傳文件的時候在服務器端判斷文件類型的問題,故用獲取文件頭的方式,直接讀取文件的前幾個字節,來判斷上傳文件是否符合格式。具體代碼如下: 
           
          Java代碼 :
          1. package com.test.day11.io;  
          2. import java.io.FileInputStream;  
          3. import java.io.IOException;  
          4. import java.util.HashMap;  
          5. /** 
          6.  * 獲取和判斷文件頭信息 
          7.  *  
          8.  * @author bigbird 
          9.  *  
          10.  */  
          11. public class FileType {  
          12.       
          13.     //緩存文件頭信息-文件頭信息  
          14.     public static final HashMap<String, String> mFileTypes = new HashMap<String, String>();  
          15.   
          16.     static {  
          17.         // images  
          18.         mFileTypes.put("FFD8FF", "jpg");  
          19.         mFileTypes.put("89504E47", "png");  
          20.         mFileTypes.put("47494638", "gif");  
          21.         mFileTypes.put("49492A00", "tif");  
          22.         mFileTypes.put("424D", "bmp");  
          23.         //  
          24.         mFileTypes.put("41433130", "dwg"); // CAD  
          25.         mFileTypes.put("38425053", "psd");  
          26.         mFileTypes.put("7B5C727466", "rtf"); // 日記本  
          27.         mFileTypes.put("3C3F786D6C", "xml");  
          28.         mFileTypes.put("68746D6C3E", "html");  
          29.         mFileTypes.put("44656C69766572792D646174653A", "eml"); // 郵件  
          30.         mFileTypes.put("D0CF11E0", "doc");  
          31.         mFileTypes.put("5374616E64617264204A", "mdb");  
          32.         mFileTypes.put("252150532D41646F6265", "ps");  
          33.         mFileTypes.put("255044462D312E", "pdf");  
          34.         mFileTypes.put("504B0304", "docx");  
          35.         mFileTypes.put("52617221", "rar");  
          36.         mFileTypes.put("57415645", "wav");  
          37.         mFileTypes.put("41564920", "avi");  
          38.         mFileTypes.put("2E524D46", "rm");  
          39.         mFileTypes.put("000001BA", "mpg");  
          40.         mFileTypes.put("000001B3", "mpg");  
          41.         mFileTypes.put("6D6F6F76", "mov");  
          42.         mFileTypes.put("3026B2758E66CF11", "asf");  
          43.         mFileTypes.put("4D546864", "mid");  
          44.         mFileTypes.put("1F8B08", "gz");  
          45.         mFileTypes.put("", "");  
          46.         mFileTypes.put("", "");  
          47.     }  
          48.   
          49.     /** 
          50.      * 根據文件路徑獲取文件頭信息 
          51.      *  
          52.      * @param filePath 
          53.      *            文件路徑 
          54.      * @return 文件頭信息 
          55.      */  
          56.     public static String getFileType(String filePath) {  
          57.         return mFileTypes.get(getFileHeader(filePath));  
          58.     }  
          59.   
          60.     /** 
          61.      * 根據文件路徑獲取文件頭信息 
          62.      *  
          63.      * @param filePath 
          64.      *            文件路徑 
          65.      * @return 文件頭信息 
          66.      */  
          67.     public static String getFileHeader(String filePath) {  
          68.         FileInputStream is = null;  
          69.         String value = null;  
          70.         try {  
          71.             is = new FileInputStream(filePath);  
          72.             byte[] b = new byte[4];  
          73.             is.read(b, 0, b.length);  
          74.             value = bytesToHexString(b);  
          75.         } catch (Exception e) {  
          76.         } finally {  
          77.             if (null != is) {  
          78.                 try {  
          79.                     is.close();  
          80.                 } catch (IOException e) {  
          81.                 }  
          82.             }  
          83.         }  
          84.         return value;  
          85.     }  
          86.   
          87.     /** 
          88.      * 將要讀取文件頭信息的文件的byte數組轉換成string類型表示 
          89.      *  
          90.      * @param src 
          91.      *            要讀取文件頭信息的文件的byte數組 
          92.      * @return 文件頭信息 
          93.      */  
          94.     private static String bytesToHexString(byte[] src) {  
          95.         StringBuilder builder = new StringBuilder();  
          96.         if (src == null || src.length <= 0) {  
          97.             return null;  
          98.         }  
          99.         String hv;  
          100.         for (int i = 0; i < src.length; i++) {  
          101.             // 以十六進制(基數 16)無符號整數形式返回一個整數參數的字符串表示形式,并轉換為大寫  
          102.             hv = Integer.toHexString(src[i] & 0xFF).toUpperCase();  
          103.             if (hv.length() < 2) {  
          104.                 builder.append(0);  
          105.             }  
          106.             builder.append(hv);  
          107.         }  
          108.         return builder.toString();  
          109.     }  
          110.   
          111.     public static void main(String[] args) throws Exception {  
          112.         final String fileType = getFileType("E:/讀書筆記/Java編程思想讀書筆記.docx");  
          113.         System.out.println(fileType);  
          114.     }  
          115. }  

          posted on 2012-12-23 11:44 你爸是李剛 閱讀(2812) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2012年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          技術網站

          行業網站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          站長網 氟塑料離心泵 注塑機 液晶廣告機
          主站蜘蛛池模板: 钟祥市| 洛隆县| 双辽市| 淳化县| 阿图什市| 昔阳县| 茶陵县| 平舆县| 兴业县| 西吉县| 大城县| 马关县| 化德县| 舞阳县| 衡阳县| 临高县| 北流市| 扶绥县| 灵宝市| 荔浦县| 上思县| 汝州市| 通河县| 普兰店市| 洪洞县| 伊宁市| 灌阳县| 扎赉特旗| 凤山市| 沁阳市| 伊宁县| 分宜县| 乌兰浩特市| 敖汉旗| 玉门市| 汾西县| 抚顺市| 高安市| 吉隆县| 乌鲁木齐市| 松江区|