精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java獲取文件類型的5種方法

開發 后端
工作中經常會用到,判斷一個文件的文件類型,這里總結一把.

[[380712]]

前言

工作中經常會用到,判斷一個文件的文件類型,這里總結一把,一般判斷文件類型的原理有2種方式:

1.根據文件擴展名判斷

  • 優點:速度快,代碼簡單
  • 缺點:無法判斷出真實的文件類型,例如一些偽造的文件或者沒有后綴名稱的文件

2.根據文件流中前幾個字符判斷

優點:可以判斷出真實的文件類型

缺點:速度慢,代碼復雜

下面我會針對每個方法,去測試驗證,測試文件如下:

  1. test.png: 創建一個正常的png文件,其擴展名為test.png
  2. test.doc: 復制一份上面的test.png文件,修改其文件名稱為test.doc

1. 使用Files.probeContentType

Java1.7開始,提供了用于解決MIME類型的方法 Files.probeContentType:

  1. public static void test() throws IOException { 
  2.     Path path = new File("d:/test.png").toPath(); 
  3.     String mimeType = Files.probeContentType(path); 
  4.     System.out.println(mimeType); 

結果:

此方法利用已安裝的FileTypeDetector實現來探查MIME類型。它調用每個實現的 probeContentType來解析類型。

但是,其默認實現是特定于操作系統的,并且可能會失敗,具體取決于我們使用的操作系統。

結論:根據文件擴展名判斷。

2. 使用URLConnection

URLConnection提供了幾種用于檢測文件的MIME類型的API。

2.1 使用getContentType

  1. public void test(){ 
  2.     File file = new File("d:/test.png"); 
  3.     URLConnection connection = file.toURL().openConnection(); 
  4.     String mimeType = connection.getContentType(); 

結果:

結論:根據文件流中前幾個字符判斷。能夠判斷真實的文件類型,但是,這種方法的主要缺點是速度非常慢。

2.2 使用guessContentTypeFromName

  1. public void test(){ 
  2.     File file = new File("d:/test.png"); 
  3.     String mimeType = URLConnection.guessContentTypeFromName(file.getName()); 

結果:

該方法利用內部的FileNameMap來判斷MIME類型。

結論:根據文件擴展名判斷。

2.3 使用guessContentTypeFromStream

  1. public static void test() throws Exception { 
  2.     FileInputStream inputFile = new FileInputStream("d:/test.doc"); 
  3.     String mimeType = URLConnection.guessContentTypeFromStream(new BufferedInputStream(inputFile)); 
  4.     System.out.println(mimeType); 

結果

結論:根據文件流中前幾個字符判斷。

2.4 使用getFileNameMap

使用URLConnection獲得MIME類型的更快方法是使用getFileNameMap()方法:

  1. public void test(){ 
  2.     File file = new File("d:/test.png"); 
  3.     FileNameMap fileNameMap = URLConnection.getFileNameMap(); 
  4.     String mimeType = fileNameMap.getContentTypeFor(file.getName()); 

結果

 

該方法返回URLConnection的所有實例使用的MIME類型表。然后,該表用于解析輸入文件類型。

當涉及URLConnection時,MIME類型的內置表非常有限。

默認情況下,該類使用content-types.properties文件,其所在目錄為JRE_HOME/lib。但是,我們可以通過使用content.types.user.table屬性指定用戶特定的表來擴展它 :

  1. System.setProperty("content.types.user.table","<path-to-file>"); 

結論:根據文件擴展名判斷。

3. 使用MimeTypesFileTypeMap

該類是Java 6附帶的,因此在使用JDK 1.6時非常方便。

  1. public void test() { 
  2.     File file = new File("product.png"); 
  3.     MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap(); 
  4.     String mimeType = fileTypeMap.getContentType(file.getName()); 

結果:

在這里,我們可以將文件名或File實例本身作為參數傳遞給函數。但是,以File實例為參數的函數在內部調用重載方法,該方法接受文件名作為參數。

在內部,此方法查找名為mime.types的文件以進行類型解析。請務必注意,該方法以特定順序搜索文件:

  1. 以編程方式將條目添加到MimetypesFileTypeMap實例
  2. 用戶主目錄中的mime.types
  3. /lib/mime.types
  4. 名為META-INF / mime.types的資源
  5. 名為META-INF / mimetypes.default的資源(通常僅在activation.jar文件中找到)

但是,如果找不到文件,它將返回application/octet-stream作為響應。

結論:根據文件擴展名判斷。

4. 使用jmimemagicjMimeMagic

是一個受限制許可的庫,我們可以使用它來獲取文件的MIME類型。

配置Maven依賴:

  1. <dependency> 
  2.     <groupId>net.sf.jmimemagic</groupId> 
  3.     <artifactId>jmimemagic</artifactId> 
  4.     <version>0.1.5</version> 
  5. </dependency> 

接下來,我們將探討如何使用該庫:

  1. public void test() { 
  2.         File file = new File("d:/test.doc"); 
  3.         MagicMatch match = Magic.getMagicMatch(file, false); 
  4.         System.out.println(match.getMimeType()); 

該庫可以處理數據流,因此不需要文件存在于文件系統中。

結果:

結論:根據文件流中前幾個字符判斷。

5. 使用Apache TikaApache Tika

是一個工具集,可檢測并從各種文件中提取元數據和文本。它具有豐富而強大的API,并帶有[tika-core],我們可以利用它來檢測文件的MIME類型。

配置Maven依賴:

  1. <dependency> 
  2.     <groupId>org.apache.tika</groupId> 
  3.     <artifactId>tika-core</artifactId> 
  4.     <version>1.18</version> 
  5. </dependency> 

接下來,我們將使用detect()方法來解析類型:

  1. public void whenUsingTika_thenSuccess() { 
  2.     File file = new File("d:/test.doc"); 
  3.     Tika tika = new Tika(); 
  4.     String mimeType = tika.detect(file); 

結果

結論:根據文件流中前幾個字符判斷。

總結

根據判斷原理總結分類如下:

具體如何選擇,依據需求而定

參考:https://www.baeldung.com/java-file-mime-type

 

責任編輯:姜華 來源: Java中文社群
相關推薦

2013-05-31 10:36:56

ASP.net文件上傳

2012-05-21 23:43:31

Java

2018-06-22 10:18:52

2009-07-20 18:06:26

ASP.NET限制上傳

2020-09-01 09:56:26

云端云計算云服務

2020-05-28 13:33:30

React Hook前端開發

2010-09-13 17:17:04

2016-10-12 13:53:38

JavaByteBufferRandomAcces

2010-04-02 13:15:01

Oracle跟蹤

2021-02-25 10:46:21

云計算云服務器云安全

2019-08-22 07:24:25

2023-08-14 17:58:13

RequestHTTP請求

2016-12-13 23:08:48

Linux命令

2009-02-25 09:52:14

類型轉換.NET 強制轉型

2018-11-01 10:10:35

網絡安全網絡攻擊網絡威脅

2017-11-03 10:40:25

Python復制文件方法

2023-12-04 15:42:10

類型Linux

2020-01-16 18:33:24

安全數據網絡

2020-07-06 14:00:01

Pandas連接參數

2021-03-21 22:23:38

云計算數據中心IT
點贊
收藏

51CTO技術棧公眾號

久久久精品国产| 精品久久久久久久久久ntr影视| 国产欧美韩国高清| www.av视频| 精品福利一区| 欧美影视一区在线| 99热都是精品| 天堂在线免费av| 美女mm1313爽爽久久久蜜臀| 欧美国产日韩中文字幕在线| 成人免费看aa片| 国产精品日本一区二区三区在线| 午夜影院在线观看欧美| 五月婷婷综合色| 亚洲乱码在线观看| 久热精品在线| 久久成人18免费网站| av无码av天天av天天爽| 高清久久精品| 色婷婷综合激情| 久久免费一级片| 国产在线视频资源| 成人一区二区三区中文字幕| 国产精品普通话| 国产精品999在线观看| 99久久久久久中文字幕一区| 精品亚洲一区二区三区在线观看| 一二三av在线| 免费污视频在线一区| 亚洲午夜久久久久久久久电影院| 亚洲国产精品久久久久久女王| 欧美一级片免费| 国产一区二区三区久久悠悠色av| 国产va免费精品高清在线| 黄网站免费在线| 小处雏高清一区二区三区| 亚洲欧美一区二区激情| 国产白袜脚足j棉袜在线观看| 久久精品超碰| 色网站国产精品| 欧美日韩一道本| www.8ⅹ8ⅹ羞羞漫画在线看| 亚洲理论在线观看| 亚洲一区二区三区免费观看| 精品美女视频在线观看免费软件 | 国产伦精品一区二区三区免.费| 亚洲一区免费| 国内精品视频一区| 成人自拍小视频| 97精品视频| 中文字幕亚洲综合久久筱田步美| xxx在线播放| 亚洲激情77| 日韩黄在线观看| 玖玖爱在线精品视频| 亚洲性视频在线| 欧美一区二区女人| 日本亚洲一区二区三区| 高清一区二区三区av| 欧美日韩成人一区二区| 一级做a免费视频| 狠狠久久综合| 欧美高清你懂得| 日本高清不卡一区| 欧美成人免费在线观看| 三上悠亚在线观看视频| 欧美国产一级| 日韩视频在线免费| 精品国产精品国产精品| 在线精品视频在线观看高清| 超碰日本道色综合久久综合| 男女羞羞免费视频| 一区在线播放| 欧美重口另类videos人妖| 国产精品va无码一区二区三区| 久久精品男女| 国产精品视频xxx| 国产精品久久久久久69| 国产成人免费av在线| 久久99精品久久久久久久青青日本| 手机看片福利永久| 国产亚洲短视频| 亚洲一区二区三区精品视频| 性国产高清在线观看| 亚洲高清免费视频| 久久久久久久久久久久久国产精品 | 国产精品.xx视频.xxtv| 欧美日韩小视频| 亚欧精品在线视频| 日韩美女毛片| 中文欧美在线视频| 青青草免费av| 亚洲久久一区| 国产精品美女久久久久久免费| 91国内精品视频| 成人免费视频caoporn| 欧美aaaaa喷水| 免费网站免费进入在线| 亚洲无线码一区二区三区| 无码播放一区二区三区| 国产成人精选| 亚洲国产精品视频在线观看| 黄色av免费播放| 欧美视频日韩| 国产精品av免费在线观看| av天堂一区二区三区| 亚洲啊v在线免费视频| 国产私拍福利精品视频二区| 欧美私模裸体表演在线观看| 亚洲av综合色区无码另类小说| 免费av一区| 欧美另类暴力丝袜| av手机天堂网| www.成人在线| 97超碰人人爱| 欧美日韩激情电影| 亚洲第一天堂av| 亚洲精品卡一卡二| 久久人人精品| 国产欧美日韩伦理| 久久五月精品| 欧美亚洲国产一区二区三区va| 怡红院一区二区| 亚洲最新色图| 国产精品国产三级国产aⅴ9色| 亚洲精品久久久久久久久久| 中文字幕欧美一| 精品www久久久久奶水| 日韩一区二区三区色| 综合网中文字幕| 日本三级小视频| 国产成人av电影在线播放| 性刺激综合网| 亚洲1234区| 日韩二区三区在线| 国产无遮挡又黄又爽在线观看| 国产专区综合网| 亚洲一区二区精品在线| 3d性欧美动漫精品xxxx软件| 亚洲开心激情网| 日韩手机在线观看| 成人激情动漫在线观看| 女女百合国产免费网站| 不卡精品视频| 久久久国产91| 国产又粗又猛又爽又黄的视频一| 国产欧美日韩另类一区| 成人性视频欧美一区二区三区| 欧美做受69| 69视频在线免费观看| 女人18毛片水真多18精品| 一区二区高清免费观看影视大全| 黄色片免费网址| 一区二区电影| 亚洲xxxxx电影| 18视频在线观看| 欧美不卡在线视频| 精品肉丝脚一区二区三区| 国产aⅴ综合色| 人妻少妇精品久久| 国内自拍欧美| 欧美一区二三区| 国产一级二级三级在线观看| 日本韩国一区二区三区视频| 摸摸摸bbb毛毛毛片| 免费高清不卡av| 一区二区三区我不卡| 电影91久久久| 欧美极品美女视频网站在线观看免费| 亚洲精品国产av| 欧美性xxxxxxx| 国产无遮挡在线观看| 久久成人免费日本黄色| 国产精品一区在线免费观看| www.国产精品一区| 黄色一区二区在线观看| 色综合久久久无码中文字幕波多| 午夜欧美理论片| 国产有色视频色综合| 福利影院在线看| 亚洲欧美激情四射在线日| 成人午夜精品视频| 中文字幕在线字幕中文| 三级欧美在线一区| 亚洲欧洲另类精品久久综合| 国产精品美女久久久久人| 欧美极品在线视频| 你懂的在线看| 欧美精三区欧美精三区| 久久综合亚洲色hezyo国产| 91在线精品一区二区三区| 黄色一级免费大片| 欧美韩国一区| 欧美日韩精品免费看| 久久er99精品| 国产精品久久久av久久久| 91免费在线| 日韩视频123| 在线免费黄色av| 亚洲视频网在线直播| av在线播放网址| 奇米影视一区二区三区小说| 特级黄色录像片| 日本欧美三级| 成人精品一区二区三区电影黑人| aa视频在线观看| 精品国产视频在线| 婷婷国产在线| 欧美一区二区三区爱爱| 午夜影院免费在线观看| 综合av第一页| 欧美图片第一页| 国产a精品视频| 天天色综合社区| 国产精品亚洲综合色区韩国| www亚洲国产| 久久最新网址| 国产伦一区二区三区色一情| 亚洲国产伊人| 国产成人综合精品| 福利成人导航| 久久伊人色综合| 国产裸舞福利在线视频合集| 亚洲国产美女久久久久| 国产精品一区二区av白丝下载| 色一区在线观看| 久草手机在线观看| 一区二区欧美国产| 老司机成人免费视频| 国产日本欧美一区二区| 自拍视频一区二区| 不卡的av中国片| 国偷自产av一区二区三区麻豆| 欧美96一区二区免费视频| 欧美在线观看www| 尹人成人综合网| 人妻互换免费中文字幕| 亚洲成人三区| 一区二区三区欧美成人| av在线不卡顿| 青娱乐国产91| 中文精品一区二区| 久久久久久久有限公司| 久久久亚洲欧洲日产| 春色成人在线视频| 午夜久久av| 国产高清精品一区二区| 亚洲一区二区三区日本久久九| 91亚洲国产精品| 国产精品99久久免费| 91免费电影网站| 国产精品成人**免费视频| 成人免费淫片视频软件| 亚洲精品乱码日韩| 91精品久久久久久久久久| 激情中国色综合| 国产精品视频精品视频| 成人午夜sm精品久久久久久久| 国产精品欧美日韩一区二区| 99久久婷婷国产综合精品首页| 国产精品久久一| a成人v在线| 成人黄色免费网站在线观看| 国产精品毛片无码| 99三级在线| 精品国产导航| 欧美成人在线免费观看| 国模精品一区| 亚洲欧洲日韩精品| 在线成人直播| 精品无码一区二区三区爱欲| 一本久道久久久| 久久精品一区二| 久久精品国产在热久久| 久久久精品视频国产| 成人午夜av电影| 久久人人爽人人爽人人片| 久久久99精品免费观看不卡| 日韩在线视频免费看| 亚洲精品成人在线| 久久草视频在线| 91久久精品一区二区三| 国产精品视频第一页| 精品久久国产字幕高潮| 桃花色综合影院| 在线看日韩av| 亚洲丝袜精品| 日本高清久久天堂| 小说区图片区亚洲| 国产乱码精品一区二区三区卡 | 欧美日韩国产精品一区二区不卡中文 | 国产aaa一级片| 免费xxxx性欧美18vr| 免费看三级黄色片| 久久一日本道色综合| 三级黄色片在线观看| 亚洲国产精品尤物yw在线观看| 亚洲天堂男人av| 欧美一区二区三区公司| 欧美精品a∨在线观看不卡 | 国模一区二区三区私拍视频| 国产伦精品一区二区三区视频 | av在线首页| 久久久久久久久爱| 激情小说亚洲| 久久国产日韩欧美| 欧美aaaa视频| av免费中文字幕| 国产高清不卡二三区| 国产熟女一区二区| 亚洲国产成人av网| 在线观看中文字幕网站| 亚洲精品狠狠操| 国产网友自拍视频导航网站在线观看 | yellow视频在线观看一区二区| 九九精品在线| 野外做受又硬又粗又大视频√| 蜜桃精品视频在线观看| 亚洲一区二区在线免费| 亚洲卡通欧美制服中文| 亚洲天堂男人av| 亚洲国产精品成人精品| 国产原厂视频在线观看| 国产精品黄视频| 亚洲动漫在线观看| 国产免费一区二区视频| 精品亚洲成a人| 国产又黄又粗视频| 懂色aⅴ精品一区二区三区蜜月 | 欧美久久天堂| 国产91色在线|亚洲| 亚洲91精品| 不用播放器的免费av| 中文幕一区二区三区久久蜜桃| 久草视频一区二区| 亚洲精品成人久久电影| 性国产高清在线观看| 亚洲xxxx做受欧美| 国产精品成人av| 福利片一区二区三区| 国产精品网站在线| a片在线免费观看| 亚洲网在线观看| 电影网一区二区| 久久久久免费网| 国产精品视区| 人人妻人人澡人人爽人人精品| 精品国产91久久久久久老师| 凸凹人妻人人澡人人添| 午夜精品一区二区三区视频免费看| 麻豆一区在线| 99re6这里有精品热视频| 国产美女一区二区三区| 91嫩草|国产丨精品入口| 在线不卡的av| 91香蕉在线观看| 国产精品.com| av成人国产| 无码h肉动漫在线观看| 欧美午夜影院在线视频| 国产特黄在线| 国产精品亚洲视频在线观看| 欧美xxav| 搡的我好爽在线观看免费视频| 国产精品久久99| 99国产精品久久久久99打野战| 欧美精品一区二区三区国产精品| 亚洲国产精品免费视频| 激情五月六月婷婷| 成人久久18免费网站麻豆| 99精品视频99| 国产一区二区久久精品| 亚洲男人在线| 日本大片免费看| 91在线精品一区二区| 中国女人真人一级毛片| 久久精品最新地址| 6080成人| 日韩一级在线免费观看| 国产精品久久影院| 亚洲黄色小说网| 日本欧美国产在线| 91精品国产自产在线观看永久∴ | 精品国产一区二区三区在线| 国产91露脸合集magnet| 日本a级c片免费看三区| 久久精品人人爽| 看全色黄大色大片免费久久久| 少妇高清精品毛片在线视频| 亚洲少妇最新在线视频| 亚州男人的天堂| 国产视频999| 在线视频日韩| 自拍偷拍第9页| 亚洲精品av在线| 日韩av懂色| 日韩精品―中文字幕| 国产精品视频一区二区三区不卡| 亚洲国产av一区二区| 国产99久久精品一区二区 夜夜躁日日躁|