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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。