web-dev-qa-db-ja.com

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");
  }
20
James

URLConnection#guessContentTypeFromStream() または ...FromName() は、標準で取得できる最高のものですJava = SEAPI。ただし、 jMimeMagic のようなサードパーティライブラリがあり、URLConnection#guessXXX()メソッドよりもうまく機能します。

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

これは、より広範囲のmimeタイプをサポートします。

26
BalusC

次のリンクには、ファイルのMimeタイプを取得するさまざまな方法の良い比較があります(Apache Tika、JMimeMagicなどのライブラリといくつかのネイティブコードも含まれています): http://www.rgagnon.com/ javadetails/Java-0487.html

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