如何获取文件的媒体类型(MIME类型)?
如何使用Java从文件中获取媒体类型(MIME类型)?到目前为止,我已经尝试了JMimeMagic和Mime-Util。第一个给了我内存异常,第二个没有正确关闭其流。
您将如何探测文件以确定其实际类型(而不仅仅是基于扩展名)?
如何使用Java从文件中获取媒体类型(MIME类型)?到目前为止,我已经尝试了JMimeMagic和Mime-Util。第一个给了我内存异常,第二个没有正确关闭其流。
您将如何探测文件以确定其实际类型(而不仅仅是基于扩展名)?
不幸
mimeType = file.toURL().openConnection().getContentType();
不起作用,因为这种URL的使用会使文件锁定,因此,例如,它是不可删除的。
但是,您有这个:
mimeType= URLConnection.guessContentTypeFromName(file.getName());
以及以下内容,其优点不仅仅是使用文件扩展名,还可以一窥内容
InputStream is = new BufferedInputStream(new FileInputStream(file));
mimeType = URLConnection.guessContentTypeFromStream(is);
//...close stream
但是,正如上面的注释所建议的那样,哑剧类型的内置表非常有限,不包括MSWord和PDF等。因此,如果要进行泛化,则需要超越内置库,例如使用Mime-Util(这是一个很棒的库,同时使用文件扩展名和内容)。