欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java獲取文件ContentType案例

 更新時(shí)間:2020年08月24日 14:57:10   作者:ouyangjun__  
這篇文章主要介紹了Java獲取文件ContentType案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

源碼如下:

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);
		
    // 方式三
    getContentTypeByType(fileUrl);
  }
 
  /**
   * 方式一
   * 該方式只支持本地文件,有時(shí)候會存在獲取為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遠(yuǎn)程文件
   * @param fileUrl
   */
  public static String getContentType(String fileUrl) {
    String contentType = null;
    try {
      contentType = new MimetypesFileTypeMap().getContentType(new File(fileUrl));
    } catch (Exception e) {
      e.printStackTrace();
    }
    System.out.println("getContentType, File ContentType is : " + contentType);
    return contentType;
  }
	
  /**
   * 方式三
   * @param fileUrl,有時(shí)候會存在獲取為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;
  }
}

打印效果圖:

補(bǔ)充知識:ImageTypeUtil工具類:Java獲取URL對應(yīng)的文件類型及其后綴

Java獲取URL對應(yīng)的文件類型及其后綴的主流方法有三種:

1、根據(jù)文件頭部數(shù)據(jù)來判斷。

通常需要先下載再判斷,但是如果想要在下載的時(shí)候確定文件后綴,就做不到了,而且獲取的文件類型不是很準(zhǔn)確。

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

這種方法最簡單高效。

3、UrlConnection獲取ContentType的類型推測出文件的類型。

這里我封裝了一個(gè)工具類,將第二種方法和第三種方法結(jié)合,但是不是用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"),//標(biāo)簽圖像文件格式(Tagged Image File Format,簡寫為TIFF)是一種主要用來存儲包括照片和藝術(shù)圖在內(nèi)的圖像的文件格式。它最初由Aldus公司與微軟公司一起為PostScript打印開發(fā)。
  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類型對應(yīng)的后綴名
   */
  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;
  } 
}

以上這篇Java獲取文件ContentType案例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中自然排序和比較器排序詳解

    Java中自然排序和比較器排序詳解

    這篇文章給大家介紹Java中的排序并不是指插入排序、希爾排序、歸并排序等具體的排序算法。而是自然排序和比較器排序,文中通過實(shí)例代碼介紹的很詳細(xì),有需要的朋友們可以參考借鑒。
    2016-09-09
  • SpringCloud Gateway的熔斷限流配置實(shí)現(xiàn)方法

    SpringCloud Gateway的熔斷限流配置實(shí)現(xiàn)方法

    Spring Cloud Gateway支持通過配置熔斷和限流機(jī)制來保證服務(wù)的穩(wěn)定性和可用性,可通過Hystrix和Resilience4j兩種方式實(shí)現(xiàn)。Hystrix通過注解和配置文件實(shí)現(xiàn)熔斷限流,Resilience4j通過編程式配置實(shí)現(xiàn)
    2023-04-04
  • 使用java實(shí)現(xiàn)各種數(shù)據(jù)統(tǒng)計(jì)圖(柱形圖,餅圖,折線圖)

    使用java實(shí)現(xiàn)各種數(shù)據(jù)統(tǒng)計(jì)圖(柱形圖,餅圖,折線圖)

    用Jfree實(shí)現(xiàn)條形柱狀圖表,java代碼實(shí)現(xiàn)??山?jīng)常用于報(bào)表的制作,代碼自動生成后可以自由查看??梢宰杂膳渲脠D表的各個(gè)屬性,用來達(dá)到自己的要求和目的。本文給大家介紹使用java實(shí)現(xiàn)各種數(shù)據(jù)統(tǒng)計(jì)圖(柱形圖,餅圖,折線圖),需要的朋友可以參考下
    2015-10-10
  • 詳解Java編程中JavaMail API的使用

    詳解Java編程中JavaMail API的使用

    這篇文章主要介紹了詳解Java編程中JavaMail API的使用,通過JavaMail可以實(shí)現(xiàn)豐富的郵件類相關(guān)功能,需要的朋友可以參考下
    2015-11-11
  • java實(shí)現(xiàn)員工工資管理系統(tǒng)

    java實(shí)現(xiàn)員工工資管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)員工工資管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 剖析Java中在Collection集合中使用contains和remove為什么要重寫equals

    剖析Java中在Collection集合中使用contains和remove為什么要重寫equals

    這篇文章主要介紹了Collection集合的contains和remove方法詳解remove以及相關(guān)的經(jīng)驗(yàn)技巧,通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Java之mybatis使用limit實(shí)現(xiàn)分頁案例講解

    Java之mybatis使用limit實(shí)現(xiàn)分頁案例講解

    這篇文章主要介紹了Java之mybatis使用limit實(shí)現(xiàn)分頁案例講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java實(shí)現(xiàn)Map集合二級聯(lián)動示例

    Java實(shí)現(xiàn)Map集合二級聯(lián)動示例

    Java實(shí)現(xiàn)Map集合二級聯(lián)動示例,需要的朋友可以參考下
    2014-03-03
  • Spring Boot實(shí)現(xiàn)郵件發(fā)送功能

    Spring Boot實(shí)現(xiàn)郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了Spring Boot實(shí)現(xiàn)郵件發(fā)送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java常見延遲隊(duì)列的實(shí)現(xiàn)方案總結(jié)

    Java常見延遲隊(duì)列的實(shí)現(xiàn)方案總結(jié)

    Java延遲隊(duì)列(DelayQueue)是Java并發(fā)包中的一個(gè)類,它實(shí)現(xiàn)了BlockingQueue接口,且其中的元素必須實(shí)現(xiàn)Delayed接口,延遲隊(duì)列中的元素按照延遲時(shí)間的長短進(jìn)行排序,本文給大家介紹了Java常見延遲隊(duì)列的實(shí)現(xiàn)方案總結(jié),需要的朋友可以參考下
    2024-03-03

最新評論