在java中确定文件的mime类型的最佳方法?

好奇Java中获取mime类型文件的最佳方式。 它应该实际检查文件,因为文件名不是一个准确的指标。

目前我正在使用以下似乎非常受欢迎或错过

is = new BufferedInputStream(new FileInputStream(fileName)); String mimeType = URLConnection.guessContentTypeFromStream(is); if(mimeType == null) { throw new IOException("can't get mime type of image"); } 

URLConnection#guessContentTypeFromStream()...FromName()确实是标准Java SE API中最好的。 然而,像jMimeMagic这样的第三方库比URLConnection#guessXXX()方法URLConnection#guessXXX()

 String mimeType = Magic.getMagicMatch(file, false).getMimeType(); 

这支持更广泛的mime类型。

以下链接可以很好地比较获取文件的Mime类型的各种方法(它包括像:Apache Tika,JMimeMagic等库以及一些本机代码): http ://www.rgagnon.com/javadetails/java- 0487.html

  public static String getContentType(String filename) { String g = URLConnection.guessContentTypeFromName(filename); if( g == null) { g = MimetypesFileTypeMap.getDefaultFileTypeMap().getContentType(filename); } return g; }