java获取文件mime_在Java中获取文件的Mime类型

nidalpres..

5

用我的5美分筹码:

TL,DR

我使用MimetypesFileTypeMap并将任何不存在的mime添加到mime.types文件中,我特别需要它.

现在,长读:

我想首先使用JDK提供的标准工具,如果这不起作用,我会去寻找其他东西.

从文件扩展名确定文件类型

从1.6开始,Java有MimetypesFileTypeMap,如上面的一个答案中所指出的,它是确定mime类型的最简单方法:

new MimetypesFileTypeMap().getContentType( fileName );

在它的vanilla实现中,这没有太大作用(即它适用于.html但不适用于.png).但是,添加您可能需要的任何内容类型非常简单:

在项目的META-INF文件夹中创建名为"mime.types"的文件

为你需要的每个mime类型添加一行,默认实现不提供(有数百种mime类型,列表随着时间的推移而增长).

png和js文件的示例条目是:

image/png png PNG

application/javascript js

从文件内容确定文件类型

从1.7开始,Java有java.nio.file.spi.FileTypeDetector,它定义了一个标准API,用于以特定于实现的方式确定文件类型.

要获取文件的mime类型,您只需使用Files并在代码中执行此操作:

Files.probeContentType(Paths.get("either file name or full path goes here"));

API定义提供了支持从文件名或文件内容(魔术字节)确定文件mime类型的工具.这就是为什么probeContentType()方法抛出IOException,以防此API的实现使用提供给它的Path来实际尝试打开与之关联的文件.

同样,vanilla的实现(JDK附带的实现)还有很多不足之处.

在遥远的银河系中的一些理想世界中,所有这些试图解决这个文件到mime类型问题的库只会实现java.nio.file.spi.FileTypeDetector,你会放入首选的实现库的jar将文件存入您的类路径,就可以了.

在现实世界中,你需要TL,DR部分,你应该找到其名称旁边有大多数星星的图书馆并使用它.对于这种特殊情况,我不需要一个(还有)).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值