为了账号安全,请及时绑定邮箱和手机立即绑定

在Java中获取文件的Mime类型

在Java中获取文件的Mime类型

慕标琳琳 2019-06-01 16:52:11
在Java中获取文件的Mime类型我只是想知道大多数人是如何从Java文件中获取MIME类型的?到目前为止,我已经尝试了两种用途:JMimeMagic & Mime-Util.第一个给了我内存异常,第二个没有正确关闭它的流。我只是想知道其他人是否有他们正确使用和工作的方法/库?
查看完整描述

4 回答

?
森林海

TA贡献2011条经验 获得超2个赞

在Java 7中,您现在只需使用Files.probeContentType(path).


查看完整回答
反对 回复 2019-06-01
?
HUH函数

TA贡献1836条经验 获得超4个赞

不幸的是,

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(这是一个很好的库,使用文件扩展名和内容)。


查看完整回答
反对 回复 2019-06-01
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

JAFAPI是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);


查看完整回答
反对 回复 2019-06-01
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

你只需要三行代码:

File file = new File("/path/to/file");Tika tika = new Tika();System.out.println(tika.detect(file));

如果您有一个Groovy控制台,只需粘贴并运行以下代码即可:

@Grab('org.apache.tika:tika-core:1.14')import org.apache.tika.Tika;def tika = new Tika()def file = new File("/path/to/file")println tika.detect(file)

记住,它的API很丰富,它可以解析“任何东西”。在TIKA-CORE 1.14中,您有:

String  detect(byte[] prefix)String  detect(byte[] prefix, String name)String  detect(File file)String  detect(InputStream stream)String 
 detect(InputStream stream, Metadata metadata)String  detect(InputStream stream, String name)String  detect(Path path)String  
 detect(String name)String  detect(URL url)
查看完整回答
反对 回复 2019-06-01
  • 4 回答
  • 0 关注
  • 2001 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号