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

时间:2010-08-26 14:31:08

标签: java image mime-types

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

3 个答案:

答案 0 :(得分:26)

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

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

这支持更广泛的mime类型。

答案 1 :(得分:6)

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

答案 2 :(得分:0)

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