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的接口 则是根据文件的扩展名来实现
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。