2017-01-03 34 views
0

我使用3種不同類型的文件(XML,CSV和JSON),我不知道我在哪一點工作。我試着用一些代碼,也就是說,如何以編程方式知道文件類型?

File file = new File("src/main/java/data" + "/molecules.xml"); 
final MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap(); 
System.out.println(fileTypeMap.getContentType(file.getName())); 

,並返回application/octet-stream和它.csv去同和.json文件中。我如何獲得正確的文件類型?

+3

你要麼檢查文件[名稱結尾(https://tika.apache.org/1.14/api/ org/apache/tika/detect/NameDetector.html),或者嘗試按文件內容檢測類型(例如,[Apache Tika](https://tika.apache.org/1.14/detection.html))。 –

回答

2

正確的MIME類型將僅會在MimetypesFileTypeMap可以搭配使用這些資源的一個文件類型:

  1. 編程條目添加到MimetypesFileTypeMap中的實例。
  2. 用戶主目錄中的文件.mime.types
  3. 檔案<java.home>/lib/mime.types
  4. 該文件或資源名爲META-INF/mime.types
  5. 文件或資源名爲META-INF/mimetypes.default(通常只在激活.jar文件中找到 文件)。

最快的解決辦法是通過addMimeTypes使用選項#1:

final MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap(); 
fileTypeMap.addMimeTypes("text/csv csv CSV"); 
fileTypeMap.addMimeTypes("application/json json JSON"); 
fileTypeMap.addMimeTypes("application/xml xml XML"); 
相關問題