在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"); }
URLConnection#guessContentTypeFromStream()
或...FromName()
确实是标准Java SE API中最好的。 然而,像jMimeMagic这样的第三方库比URLConnection#guessXXX()
方法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; }