在我下面的代碼:的Java得到的內容文件類型無法按預期工作
MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector");
File f = new File ("c:\\temp\\mime\\java.exe");
Collection<?> mimeTypes = MimeUtil.getMimeTypes("c:\\temp\\mime\\java.exe");
MimeType m = mimeTypes.toArray(new MimeType[mimeTypes.size()])[0];
System.out.println(m);
輸出始終應用程序/八位字節流不管是什麼文件類型選擇,即CSV,XLS EXE等
但根據以下站點:
http://www.rgagnon.com/javadetails/java-0487.html
它應該顯示像MS-字或MS-Excel的等
如何使這項工作?我想要的只是從文件內容中獲取文件類型(而不是使用不太可靠的文件擴展名)。我正在閱讀其他選項,比如需要太多文件(比如20)的tika,這對於這個單一目的來說太多了,而JMimeMagic需要apache-oro,這是一個死了的項目,因此我也不喜歡這個想法。所有其他解決方案似乎都依賴於文件擴展名,這似乎不像上面提到的那樣可靠。
感謝
你看到了http://stackoverflow.com/questions/51438/getting-a-files-mime-type-in-java? –
當然可以。該帖子完全是指我上面提到的鏈接,我只是從該網站複製粘貼代碼片段。 –
可能相關 - 我在linux上遇到類似的問題。我使用的是mime-util-2.1.3.jar,它檢測一些純文本文件,如.txt,MANIFEST.MF(文本文件)和.jsp作爲[application/octet-stream]。不過,它對許多otehr文件類型正常工作。在Linux上,如果我在這些相同的文本文件上從命令行「文件-i」或「mimetype -M」運行,我會得到正確的mimetype。 –