最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java校驗(yàn)文件類型實(shí)現(xiàn)方式

 更新時(shí)間:2026年03月30日 09:29:15   作者:銀龍丶裁決  
本文介紹了判斷文件類型的方法,包括MIME類型判斷和文件頭校驗(yàn),MIME類型判斷適合判斷指定文件類型,需要Java7及以上版本支持,且不同系統(tǒng)可能有差異,文件頭校驗(yàn)直接檢查文件開(kāi)頭的幾個(gè)字節(jié),可以判斷文件格式是否正確

通常校驗(yàn)文件類型,是獲取文件后綴,根據(jù)后綴名進(jìn)行判斷。

但其實(shí)這種方式是有被欺騙風(fēng)險(xiǎn)的。

下面記錄幾種判斷文件類型的方式。

MIME類型判斷

MIME (Multipurpose Internet Mail Extensions) 類型是用來(lái)標(biāo)識(shí)文件類型的一種方式。

每種文件類型都有一個(gè)對(duì)應(yīng)的MIME類型,獲取上傳文件的MIME類型,可以判斷文件的類型。

import javax.activation.MimetypesFileTypeMap;
import java.io.File;
 
File file = new File("example.jpg");
String mimeType = new MimetypesFileTypeMap().getContentType(file);
if (mimeType.equals("image/jpeg") || mimeType.equals("image/png")) {
    // 文件類型合法
} else {
    // 文件類型不合法
}

這種方式適合用來(lái)判斷指定文件是否為指定類型。

需要注意:

  • 使用文件的MIME類型驗(yàn)證文件類型需要java 7及以上版本的支持。
  • 另外,不同的操作系統(tǒng)和文件系統(tǒng)可能對(duì)MIME類型的識(shí)別有所差異,需進(jìn)行充分測(cè)試。

文件頭校驗(yàn)

文件頭是文件開(kāi)頭的幾個(gè)字節(jié),通常用于標(biāo)識(shí)文件的類型和格式。

校驗(yàn)文件頭,可以判斷文件類型是否符合預(yù)期。

import java.io.FileInputstream;
import java.io.IoException;

public class FileValidator {
	public void imgFileValidator(String filePath) throws Exception {
		FileInputstream fis = new FileInputstream(filePath)
		byte[] header = new byte[4];
		fis.read(header);
		if(header[0] == (byte) 0x && header[1] == (byte) 0xD8){
			// 文件類型是JPEG
		}
	}
}

讀取JPEG文件的前兩個(gè)字節(jié),并檢查其是否等于JPEG文件的固定文件頭。如果文件頭不匹配,則說(shuō)明文件格式不正確。

上述代碼是JPEG格式的判定,如果是ZIP格式判定,代碼如下:

public void zipFileValidator(String filePath) throws Exception{
	FileInputstream fis = new FileInputstream(filePath);
	byte[l buffer = new byte[4];
	fis.read(buffer,0,4);
	fis.close();
	if(buffer[0] == (byte)0x50 
		&& buffer[1] == (byte)0x4B 
		&& buffer[2] == (byte)0x03 
		&& buffer[3] == (byte)0x04){
		//文件類型為zip
	}
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring集成Quartz的簡(jiǎn)單配置的方法

    Spring集成Quartz的簡(jiǎn)單配置的方法

    本篇文章主要介紹了Spring集成Quartz的簡(jiǎn)單配置的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • 解析Java8 Stream原理

    解析Java8 Stream原理

    說(shuō)起 Java 8,我們知道 Java 8 大改動(dòng)之一就是增加函數(shù)式編程,而 Stream API 便是函數(shù)編程的主角,Stream API 是一種流式的處理數(shù)據(jù)風(fēng)格,也就是將要處理的數(shù)據(jù)當(dāng)作流,在管道中進(jìn)行傳輸,并在管道中的每個(gè)節(jié)點(diǎn)對(duì)數(shù)據(jù)進(jìn)行處理,如過(guò)濾、排序、轉(zhuǎn)換等
    2021-06-06
  • Java中實(shí)現(xiàn)簡(jiǎn)單的Excel導(dǎo)出

    Java中實(shí)現(xiàn)簡(jiǎn)單的Excel導(dǎo)出

    今天小編就為大家分享一篇關(guān)于Java中實(shí)現(xiàn)簡(jiǎn)單的Excel導(dǎo)出,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Spring Boot Actuator監(jiān)控端點(diǎn)小結(jié)

    Spring Boot Actuator監(jiān)控端點(diǎn)小結(jié)

    這篇文章主要介紹了Spring Boot Actuator監(jiān)控端點(diǎn)小結(jié),需要的朋友可以參考下
    2017-06-06
  • Java 中的 Consumer 與 Supplier 接口使用場(chǎng)景與示例

    Java 中的 Consumer 與 Supplier 接口使用場(chǎng)景與

    文章介紹了Java 8中函數(shù)式接口的核心概念,Consumer與Supplier接口使用場(chǎng)景與示例,重點(diǎn)對(duì)比了Consumer(消費(fèi)數(shù)據(jù))與Supplier(供給數(shù)據(jù))的區(qū)別,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • 你什么是Elastic Stack(ELK)

    你什么是Elastic Stack(ELK)

    這篇文章主要介紹了你什么是Elastic Stack(ELK),ELK是三款軟件的簡(jiǎn)稱,分別是Elasticsearch、Logstash、Kibana組成,需要的朋友可以參考下
    2023-04-04
  • Java線程池的幾種實(shí)現(xiàn)方法和區(qū)別介紹

    Java線程池的幾種實(shí)現(xiàn)方法和區(qū)別介紹

    下面小編就為大家?guī)?lái)一篇Java線程池的幾種實(shí)現(xiàn)方法和區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧,祝大家游戲愉快哦
    2016-05-05
  • 基于字符串常用API(詳解)

    基于字符串常用API(詳解)

    下面小編就為大家?guī)?lái)一篇基于字符串常用API(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • springboot 如何設(shè)置端口號(hào)和添加項(xiàng)目名

    springboot 如何設(shè)置端口號(hào)和添加項(xiàng)目名

    這篇文章主要介紹了springboot設(shè)置端口號(hào)和添加項(xiàng)目名的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java easyUI實(shí)現(xiàn)自定義網(wǎng)格視圖實(shí)例代碼

    java easyUI實(shí)現(xiàn)自定義網(wǎng)格視圖實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于java easyUI實(shí)現(xiàn)自定義網(wǎng)格視圖的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10

最新評(píng)論

吉安县| 孙吴县| 永清县| 黎城县| 裕民县| 鄢陵县| 三门峡市| 西华县| 景谷| 广饶县| 安顺市| 通化市| 安阳市| 区。| 长治县| 乐清市| 怀仁县| 保靖县| 昌都县| 林周县| 延长县| 重庆市| 离岛区| 大新县| 通化市| 日土县| 建湖县| 阿拉尔市| 元阳县| 德昌县| 额济纳旗| 永康市| 瑞丽市| 梧州市| 马鞍山市| 黄大仙区| 东明县| 福海县| 宜昌市| 临洮县| 黄浦区|