2010-08-26 98 views
19

好奇在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"); 
    } 
+0

仍然相信你的方式对于大多数情况是很好的。 – 2010-08-28 04:35:14

+0

我使用了作为答案张贴在这里的类:http://stackoverflow.com/a/10140531/293280 – 2014-03-18 07:56:20

回答

23

URLConnection#guessContentTypeFromStream()...FromName()确实是最好的你可以标准的Java SE API中得到如下。然而,有像jMimeMagic这样的第三方库比URLConnection#guessXXX()方法更有效。

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

这支持更广泛的mime类型。

+0

谢谢!将试一试 – James 2010-08-26 22:47:33

+0

不客气。 – BalusC 2010-08-26 22:54:40

+0

@BalusC你可以说这个SO问题[使用JMimeMagic检查MIME类型的文件](http://stackoverflow.com/questions/15325047/check-file-of-mime-type-with-jmimemagic)? – 2013-03-11 15:12:56

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