在Java中获取文件的Mime类型

我只是想知道大多数人如何从Java文件中获取MIME类型? 到目前为止,我已经尝试了两个utils: JMimeMagicMime-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

上一篇: Getting A File's Mime Type In Java

下一篇: How to merge two arrays in JavaScript and de