Java获取文件ContentType案例
Java获取文件ContentType案例 Java获取文件ContentType案例主要介绍了Java获取文件ContentType的三种方式,具有很好的参考价值,希望对大家有所帮助。下面将详细说明每种方式的实现细节和优缺点。 方式一:使用Files.probeContentType()方法 在Java 7中引入了NIO.2 API,提供了Files.probeContentType()方法,该方法可以根据文件的扩展名和内容来检测文件的ContentType。该方法返回文件的ContentType,否则返回null。 ```java public static String getContentTypeByLocal(String fileUrl) { String contentType = null; Path path = Paths.get(fileUrl); try { contentType = Files.probeContentType(path); } catch (IOException e) { e.printStackTrace(); } System.out.println("getContentTypeByLocal, File ContentType is : " + contentType); return contentType; } ``` 优点:不需要依赖外部库,Java 7及以上版本中可以使用。 缺点:只支持本地文件,有时候会存在获取为null的情况。 方式二:使用MimetypesFileTypeMap MimetypesFileTypeMap是Java Activation API的一部分,提供了getContentType()方法,该方法可以根据文件的扩展名来检测文件的ContentType。 ```java public static String getContentType(String fileUrl) { String contentType = null; try { contentType = new MimetypesFileTypeMap().getContentType(new File(fileUrl)); } catch (Exception e) { e.printStackTrace(); } System.out.println("getContentType, File ContentType is : " + contentType); return contentType; } ``` 优点:支持本地文件,也支持http/https远程文件,依赖Java Activation API。 缺点:需要依赖Java Activation API。 方式三:使用URLConnection.getFileNameMap() URLConnection.getFileNameMap()方法可以根据文件的扩展名来检测文件的ContentType。 ```java public static String getContentTypeByType(String fileUrl) { String contentType = null; try { FileNameMap fileNameMap = URLConnection.getFileNameMap(); contentType = fileNameMap.getContentTypeFor(fileUrl); } catch (Exception e) { e.printStackTrace(); } System.out.println("getContentTypeByType, File ContentType is : " + contentType); return contentType; } ``` 优点:支持本地文件,也支持http/https远程文件,不需要依赖外部库。 缺点:有时候会存在获取为null的情况。 三种方式都可以用来获取文件的ContentType,但需要根据具体情况选择合适的方法。在实际开发中,推荐使用方式二,使用MimetypesFileTypeMap来获取文件的ContentType。