Java获取文件ContentType案例

网友投稿 245 2023-03-23

Java获取文件ContentType案例

源码如下:

package com.oysept;

import java.io.File;

import java.io.IOException;

import java.net.FileNameMap;

import java.net.URLConnection;

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.Paths;

import javax.activation.MimetypesFileTypeMap;

/**

* Java获取文件ContentType

* @author ouyangjun

*/

public class ContentTypeUtils {

public static void main(String[] args) {

// 文件路径

String fileUrl = "C:\\Users\\admin\\Desktop\\tttt.rar";

// 方式一

getContentTypeByLocal(fileUrl);

// 方式二,推荐使用

getContentType(fileUrl);

// 方式三

gethttp://ContentTypeByType(fileUrl);

}

/**

* 方式一

* 该方式只支持本地文件,有时候会存在获取为null的情况

* @param fileUrl

*/

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;

}

/**

* 方式二

* 该方式支持本地文件,也支持http/https远程文件

* @param fileUrl

*/

public static String getContentType(String fileUrl) {

String contentType = null;

try {

contentType = new MimetypesFileTypeMap().getContentType(new File(fileUrl))EfCkjGNW;

} catch (Exception e) {

e.printStackTrace();

}

System.out.println("getContentType, File ContentType is : " + contentType);

return contentType;

}

/**

* 方式三

* @param fileUrl,有时候会存在获取为null的情况

*/

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;

}

}

打印效果图:

补充知识:ImageTypeUtil工具类:Java获取URL对应的文件类型及其后缀

http://

Java获取URL对应的文件类型及其后缀的主流方法有三种:

1、根据文件头部数据来判断。

通常需要先下载再判断,但是如果想要在下载的时候确定文件后缀,就做不到了,而且获取的文件类型不是很准确。

2、使用lastIndexOf去解析url字符串。

这种方法最简单高效。

3、UrlConnection获取ContentType的类型推测出文件的类型。

这里我封装了一个工具类,将第二种方法和第三种方法结合,但是不是用lastIndexOf,而是判断url字符串是否包含图片的后缀。

package johny.utils;

import java.net.URLConnection;

/**

* @author Johny 林子豪

*/

public enum ImageTypeUtil {

PNG(".png", "image/png"),

JPG(".jpg", "image/jpeg"),

BMP(".bmp", "image/bmp"),

JPEG(".jpeg", "image/jpeg"),

GIF(".gif", "image/gif"),

TIF(".tif", "image/tiff"),//标签图像文件格式(Tagged Image File Format,简写为TIFF)是一种主要用来存储包括照片和艺术图在内的图像的文件格式。它最初由Aldus公司与微软公司一起为PostScript打印开发。

TIFF(".tiff", "image/tiff"),

FAX(".fax", "image/fax"),

ICO(".ico", "image/x-icon"),

JFIF(".jfif", "image/jpeg"),

JPE(".jpe", "image/jpeg"),

NET(".net", "image/pnetvue"),

WBMP(".wbmp", "image/vnd.wap.wbmp");

//如果有其他的mime类型,

/**

* 后缀名

*/

final String mSuffix;

final String mMIME;

ImageTypeUtil(String suffix, String mime) {

this.mSuffix = suffix;

this.mMIME = mime;

}

public static String getSuffixFromUrl(String url) {

for (ImageTypeUtil fileType : values()) {

if (url.contains(fileType.suffix())) {

return fileType.suffix();

}

}

String contentType = getMIMETypeFromUrl(url);

if (contentType == null) return null;

return mimeMapingSuffix(contentType);

}

public static String getMIMETypeFromUrl(String url) {

if (url == null || url.isEmpty()) {

return null;

}

return URLConnection.guessContentTypeFromName(url);

}

/**

* mime类型对应的后缀名

*/

public static String mimeMapingSuffix(String mime) {

for (ImageTypeUtil fileType : values()) {

if (fileType.mime().equals(mime)) {

return fileType.suffix();

}

}

return null;

}

public String mime() {

return mMIME;

}

/**

* 获取后缀名 * * @return 指定类型的后缀名,如'.mp4'

*/

public String suffix() {

return this.mSuffix;

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java在原字符中插入新字符或字符串实例
下一篇:浅谈Java HttpURLConnection请求方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~