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 = SEAPI。ただし、 jMimeMagic のようなサードパーティライブラリがあり、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;
}