在Java中获取文件的Mime类型
我只是想知道大多数人如何从Java文件中获取MIME类型? 到目前为止,我已经尝试了两个utils: JMimeMagic
和Mime-Util
。
第一个给我的内存异常,第二个没有正确关闭它的流。 我只是想知道是否有其他人有他们使用和正确工作的方法/库?
在Java 7中,您现在可以使用Files.probeContentType(path)
。
不幸,
mimeType = file.toURL().openConnection().getContentType();
不起作用,因为URL的这种使用使文件锁定,所以例如它是不可删除的。
但是,你有这样的:
mimeType= URLConnection.guessContentTypeFromName(file.getName());
还有以下内容,它具有超越单纯使用文件扩展名的优点,并且可以浏览内容
InputStream is = new BufferedInputStream(new FileInputStream(file));
mimeType = URLConnection.guessContentTypeFromStream(is);
//...close stream
但是,正如上面的评论所建议的,mime类型的内置表非常有限,不包括MSWord和PDF等。 所以,如果你想概括一下,你需要超越内置库,例如使用Mime-Util(这是一个很棒的库,同时使用文件扩展名和内容)。
JAF API是JDK 6的一部分。查看javax.activation
包。
大多数有趣的类是javax.activation.MimeType
- 一个实际的MIME类型持有者 - 和javax.activation.MimetypesFileTypeMap
- 类的实例可以将MIME类型解析为文件的字符串:
String fileName = "/path/to/file";
MimetypesFileTypeMap mimeTypesMap = new MimetypesFileTypeMap();
// only by file name
String mimeType = mimeTypesMap.getContentType(fileName);
// or by actual File instance
File file = new File(fileName);
mimeType = mimeTypesMap.getContentType(file);
链接地址: http://www.djcxy.com/p/8231.html