Java中如何获取一个文件MIME-TYPE呢?
下文笔者讲述获取文件的MIME-TYPE的方法及示例分享,如下所示
获取文件类型的实现思路
方式1:
借助Files.probeContentType方法获取文件类型
方式2:
使用URLConnection 创建一个文件对象
使用getContentType()方法即可获取文件类型
方式3:
getFileNameMap方法
方式4:
Apache Tika方法
例
使用Files.probeContentType直接获取文件的类型
Path path = Files.createTempFile("myprofile", ".txt");
String mimeType = Files.probeContentType(path);
Files.probeContentType 会使用系统安装的FileTypeDetector探测文件类型 没有安装的FileTypeDetector 缺点 当文件不再文件系统上存在或者文件没有扩展名,都不能成功获取文件的类型。
URLConnection
URLConnection提供几个API来获取文件的MIME类型 主要由以下几个API:
1.API getContentType
File myProcileFile = new File("myprofile.png");
URLConnection connection = myProcileFile.toURL().openConnection();
String mimeType = connection.getContentType();
2.guessContentTypeFromName
File myProcileFile = new File("myprofile.png");
String mimeType = URLConnection.guessContentTypeFromName(myProcileFile.getName());
3.getFileNameMap
File myProcileFile = new File("myprofile.png");
FileNameMap fileNameMap = URLConnection.getFileNameMap();
String mimeType = fileNameMap.getContentTypeFor(myProcileFile.getName());
System.setProperty("content.types.user.table","my-table-file");
MimeTypesFileTypeMap
File file = new File("myprofile.png");
MimetypesFileTypeMap mimetypesFileTypeMap = new MimetypesFileTypeMap();
String mimeType = mimetypesFileTypeMap.getContentType(file.getName());
Apache Tika
Apache Tika
是一个检测或获取文件Meta数据的工具集
也提供丰富的接口用于探测文件的MIME类型
他实现的基本原理也是根据stream里的Magic标示来实现的
如果不适用stream的接口
则是根据文件的扩展名来实现
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


