熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

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

2013-11-23 18:55:18  來源: Java核心技術 

  件頭是位於文件開頭的一段承擔一定任務的數據一般都在開頭的部分頭文件作為一種包含功能函數數據接口聲明的載體文件用於保存程序的聲明(declaration)而定義文件用於保存程序的實現 (implementation)

  為了解決在用戶上傳文件的時候在服務器端判斷文件類型的問題故用獲取文件頭的方式直接讀取文件的前幾個字節來判斷上傳文件是否符合格式具體代碼如下

  Java代碼 :

  package comtestdayio;

  import javaioFileInputStream;

  import javaioIOException;

  import javautilHashMap;

  /**

  * 獲取和判斷文件頭信息

  *

  * @author bigbird

  *

  */

  public class FileType {

  //緩存文件頭信息文件頭信息

  public static final HashMap<String String> mFileTypes = new HashMap<String String>()

  static {

  // images

  mFileTypesput(FFDFF jpg

  mFileTypesput(E png

  mFileTypesput( gif

  mFileTypesput(A tif

  mFileTypesput(D bmp

  //

  mFileTypesput( dwg // CAD

  mFileTypesput( psd

  mFileTypesput(BC rtf // 日記本

  mFileTypesput(CFDC xml

  mFileTypesput(DCE html

  mFileTypesput(CDA eml // 郵件

  mFileTypesput(DCFE doc

  mFileTypesput(EA mdb

  mFileTypesput(DF ps

  mFileTypesput(DE pdf

  mFileTypesput(B docx

  mFileTypesput( rar

  mFileTypesput( wav

  mFileTypesput( avi

  mFileTypesput(ED rm

  mFileTypesput(BA mpg

  mFileTypesput(B mpg

  mFileTypesput(DFF mov

  mFileTypesput(BECF asf

  mFileTypesput(D mid

  mFileTypesput(FB gz

  mFileTypesput(

  mFileTypesput(

  }

  /**

  * 根據文件路徑獲取文件頭信息

  *

  * @param filePath

  *            文件路徑

  * @return 文件頭信息

  */

  public static String getFileType(String filePath) {

  return mFileTypesget(getFileHeader(filePath))

  }

  /**

  * 根據文件路徑獲取文件頭信息

  *

  * @param filePath

  *            文件路徑

  * @return 文件頭信息

  */

  public static String getFileHeader(String filePath) {

  FileInputStream is = null;

  String value = null;

  try {

  is = new FileInputStream(filePath)

  byte[] b = new byte[];

  isread(b blength)

  value = bytesToHexString(b)

  } catch (Exception e) {

  } finally {

  if (null != is) {

  try {

  isclose()

  } catch (IOException e) {

  }

  }

  }

  return value;

  }

  /**

  * 將要讀取文件頭信息的文件的byte數組轉換成string類型表示

  *

  * @param src

  *            要讀取文件頭信息的文件的byte數組

  * @return 文件頭信息

  */

  private static String bytesToHexString(byte[] src) {

  StringBuilder builder = new StringBuilder()

  if (src == null || srclength <= ) {

  return null;

  }

  String hv;

  for (int i = ; i < srclength; i++) {

  // 以十六進制(基數 )無符號整數形式返回一個整數參數的字符串表示形式並轉換為大寫

  hv = IntegertoHexString(src[i] & xFF)toUpperCase()

  if (hvlength() < ) {

  builderappend(

  }

  builderappend(hv)

  }

  return buildertoString()

  }

  public static void main(String[] args) throws Exception {

  final String fileType = getFileType(E:/讀書筆記/Java編程思想讀書筆記docx

  Systemoutprintln(fileType)

  }

  }


From:http://tw.wingwit.com/Article/program/Java/hx/201311/25980.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.