好奇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 :(得分: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;
}