Java获取文件ContentType案例
源码如下:
packagecom.oysept;
importjava.io.File;
importjava.io.IOException;
importjava.net.FileNameMap;
importjava.net.URLConnection;
importjava.nio.file.Files;
importjava.nio.file.Path;
importjava.nio.file.Paths;
importjavax.activation.MimetypesFileTypeMap;
/**
*Java获取文件ContentType
*@authorouyangjun
*/
publicclassContentTypeUtils{
publicstaticvoidmain(String[]args){
//文件路径
StringfileUrl="C:\\Users\\admin\\Desktop\\tttt.rar";
//方式一
getContentTypeByLocal(fileUrl);
//方式二,推荐使用
getContentType(fileUrl);
//方式三
getContentTypeByType(fileUrl);
}
/**
*方式一
*该方式只支持本地文件,有时候会存在获取为null的情况
*@paramfileUrl
*/
publicstaticStringgetContentTypeByLocal(StringfileUrl){
StringcontentType=null;
Pathpath=Paths.get(fileUrl);
try{
contentType=Files.probeContentType(path);
}catch(IOExceptione){
e.printStackTrace();
}
System.out.println("getContentTypeByLocal,FileContentTypeis:"+contentType);
returncontentType;
}
/**
*方式二
*该方式支持本地文件,也支持http/https远程文件
*@paramfileUrl
*/
publicstaticStringgetContentType(StringfileUrl){
StringcontentType=null;
try{
contentType=newMimetypesFileTypeMap().getContentType(newFile(fileUrl));
}catch(Exceptione){
e.printStackTrace();
}
System.out.println("getContentType,FileContentTypeis:"+contentType);
returncontentType;
}
/**
*方式三
*@paramfileUrl,有时候会存在获取为null的情况
*/
publicstaticStringgetContentTypeByType(StringfileUrl){
StringcontentType=null;
try{
FileNameMapfileNameMap=URLConnection.getFileNameMap();
contentType=fileNameMap.getContentTypeFor(fileUrl);
}catch(Exceptione){
e.printStackTrace();
}
System.out.println("getContentTypeByType,FileContentTypeis:"+contentType);
returncontentType;
}
}
打印效果图:
补充知识:ImageTypeUtil工具类:Java获取URL对应的文件类型及其后缀
Java获取URL对应的文件类型及其后缀的主流方法有三种:
1、根据文件头部数据来判断。
通常需要先下载再判断,但是如果想要在下载的时候确定文件后缀,就做不到了,而且获取的文件类型不是很准确。
2、使用lastIndexOf去解析url字符串。
这种方法最简单高效。
3、UrlConnection获取ContentType的类型推测出文件的类型。
这里我封装了一个工具类,将第二种方法和第三种方法结合,但是不是用lastIndexOf,而是判断url字符串是否包含图片的后缀。
packagejohny.utils;
importjava.net.URLConnection;
/**
*@authorJohny林子豪
*/
publicenumImageTypeUtil{
PNG(".png","image/png"),
JPG(".jpg","image/jpeg"),
BMP(".bmp","image/bmp"),
JPEG(".jpeg","image/jpeg"),
GIF(".gif","image/gif"),
TIF(".tif","image/tiff"),//标签图像文件格式(TaggedImageFileFormat,简写为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类型,
/**
*后缀名
*/
finalStringmSuffix;
finalStringmMIME;
ImageTypeUtil(Stringsuffix,Stringmime){
this.mSuffix=suffix;
this.mMIME=mime;
}
publicstaticStringgetSuffixFromUrl(Stringurl){
for(ImageTypeUtilfileType:values()){
if(url.contains(fileType.suffix())){
returnfileType.suffix();
}
}
StringcontentType=getMIMETypeFromUrl(url);
if(contentType==null)returnnull;
returnmimeMapingSuffix(contentType);
}
publicstaticStringgetMIMETypeFromUrl(Stringurl){
if(url==null||url.isEmpty()){
returnnull;
}
returnURLConnection.guessContentTypeFromName(url);
}
/**
*mime类型对应的后缀名
*/
publicstaticStringmimeMapingSuffix(Stringmime){
for(ImageTypeUtilfileType:values()){
if(fileType.mime().equals(mime)){
returnfileType.suffix();
}
}
returnnull;
}
publicStringmime(){
returnmMIME;
}
/**
*获取后缀名**@return指定类型的后缀名,如'.mp4'
*/
publicStringsuffix(){
returnthis.mSuffix;
}
}
以上这篇Java获取文件ContentType案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。