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

java中MultipartFile和File最簡單的互相轉(zhuǎn)換示例

 更新時(shí)間:2023年09月25日 11:53:50   作者:買火車的小男孩  
這篇文章主要給大家介紹了關(guān)于java中MultipartFile和File最簡單的互相轉(zhuǎn)換的相關(guān)資料,MultipartFile和File都是Java中用于處理文件上傳的類,MultipartFile用于處理上傳的文件,File用于處理本地磁盤上的文件,需要的朋友可以參考下

MultipartFile和File 的區(qū)別

MuitipartFile 是 Spring 框架中用來處理文件上傳的接口,它封裝了文件上傳的信息,比如文件名、文件類型等。

File 是Java 標(biāo)準(zhǔn)庫中提供的文件操作類,用于描述文件信息,比如文件路徑、文件大小等

總的來說,MultipantFile 是用來處理文件上傳的,而 File 則是用來描述文件信息的。

MultipartFile 與 File 的 互相轉(zhuǎn)換

1. MultipartFile 轉(zhuǎn) File

最常見的方式(通過文件流寫入):

public File multipartFile2File (MultipartFile multipartFile) {
    // 創(chuàng)建臨時(shí)文件
    String path = "export/demo.xlsx";
    File file = new File(path);
    InputStream inputStream = null;
    FileOutputStream outputStream = null;
    try {
        // 獲取文件輸入流
        inputStream = multipartFile.getInputStream();
        if (!file.exists()) {
            file.createNewFile();
        }
        // 創(chuàng)建輸出流
        outputStream = new FileOutputStream(file);
        byte[] bytes = new byte[1024];
        int len;
        // 寫入到創(chuàng)建的臨時(shí)文件
        while ((len = inputStream.read(bytes)) > 0) {
            outputStream.write(bytes, 0, len);
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    } finally {
        // 關(guān)流
        try {
            if (outputStream != null) {
                outputStream.close();
            }
            if (outputStream != null) {
                inputStream.close();
            }
            outputStream.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    return file;
}

最簡單的方式:

使用Spring中的FileCpopyUtils類的copy()方法將MultipartFile 轉(zhuǎn)換為File類型

public File multipartFile2File (MultipartFile multipartFile) {
    String path = "export/demo.xlsx";
    File file = new File(path);
    try {
        if (!file.exists()) {
            file.createNewFile();
        }
????????// 底層也是通過io流寫入文件file
        FileCopyUtils.copy(multipartFile.getBytes(), file);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return file;
}

2. File 轉(zhuǎn) MultipartFile

使用org.springframework.mock.web.MockMultipartFile 需要導(dǎo)入spring-test.jar

public MultipartFile file2MultipartFile () {
    String path = "export/demo.xlsx";
    File file = new File(path);
    MultipartFile multipartFile;
    try {
        FileInputStream fileInputStream = new FileInputStream(file);
        multipartFile = new MockMultipartFile("copy"+file.getName(),file.getName(), ContentType.APPLICATION_OCTET_STREAM.toString(),fileInputStream);
        System.out.println(multipartFile.getName()); // 輸出demo.xlsx
        fileInputStream.close();
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return multipartFile;
}

 使用CommonsMultipartFile

public MultipartFile file2MultipartFile () {
    String path = "export/demo.xlsx";
    File file = new File(path);
    MultipartFile multipartFile;
    try {
        DiskFileItem fileItem2 = (DiskFileItem) new DiskFileItemFactory().createItem("file", ContentType.MULTIPART.getValue(), true, file.getName());
????????//也可以用IOUtils.copy(inputStream,os);
        Files.copy(Paths.get(file.getAbsolutePath()), fileItem2.getOutputStream());
        multipartFile = new CommonsMultipartFile(fileItem2);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return multipartFile;
}

總結(jié) 

到此這篇關(guān)于java中MultipartFile和File最簡單的互相轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)java MultipartFile和File互轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 二維碼生成Java實(shí)現(xiàn)代碼

    二維碼生成Java實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了二維碼生成Java實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • springboot+swagger2.10.5+mybatis-plus 入門詳解

    springboot+swagger2.10.5+mybatis-plus 入門詳解

    這篇文章主要介紹了springboot+swagger2.10.5+mybatis-plus 入門,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java中Calendar類的一些常用方法小結(jié)

    Java中Calendar類的一些常用方法小結(jié)

    項(xiàng)目當(dāng)中,我們經(jīng)常會(huì)涉及到對時(shí)間的處理,Date類最主要的作用就是獲得當(dāng)前時(shí)間,同時(shí)這個(gè)類里面也具有設(shè)置時(shí)間以及一些其他的功能,但更推薦使用 Calendar 類進(jìn)行時(shí)間和日期的處理,這篇文章主要給大家介紹了關(guān)于Java中Calendar類的一些常用方法,需要的朋友可以參考下
    2021-11-11
  • springcloud3 Sentinel的搭建及案例操作方法

    springcloud3 Sentinel的搭建及案例操作方法

    Sentinel是分布式系統(tǒng)流量控制的哨兵,阿里開源的一套服務(wù)容錯(cuò)的綜合性解決方案,這篇文章主要介紹了springcloud3 Sentinel的搭建以及案例操作,需要的朋友可以參考下
    2023-01-01
  • 淺談java中HashMap鍵的比較方式

    淺談java中HashMap鍵的比較方式

    今天帶大家了解一下java中HashMap鍵的比較方式,文中有非常詳細(xì)的解釋說明及代碼示例,對正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • java中this關(guān)鍵字的詳細(xì)使用介紹

    java中this關(guān)鍵字的詳細(xì)使用介紹

    大家好,本篇文章主要講的是java中this關(guān)鍵字的詳細(xì)使用介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • java和jsp之間的request傳值方法

    java和jsp之間的request傳值方法

    這篇文章主要給大家介紹了關(guān)于java和jsp之間的request傳值方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Spring Boot集成Swagger接口分類與各元素排序問題

    Spring Boot集成Swagger接口分類與各元素排序問題

    這篇文章主要介紹了Spring Boot集成Swagger接口分類與各元素排序問題,首先我們需要對Swagger中的接口也就是以Controller 層作為第一級梯度進(jìn)行組織的,Controller在我們實(shí)際開發(fā)中,與其他具體接口之間是存在一對多的關(guān)系,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-10-10
  • Java使用RandomAccessFile類對文件進(jìn)行讀寫

    Java使用RandomAccessFile類對文件進(jìn)行讀寫

    本篇文章主要介紹了Java使用RandomAccessFile類對文件進(jìn)行讀寫,詳細(xì)的介紹了RandomAccessFile類的使用技巧和實(shí)例應(yīng)用,有興趣的可以了解一下
    2017-04-04
  • spring aop底層源碼執(zhí)行邏輯剖析(源碼解析)

    spring aop底層源碼執(zhí)行邏輯剖析(源碼解析)

    這篇文章主要介紹了spring aop底層源碼執(zhí)行邏輯剖析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-08-08

最新評論

涪陵区| 新乡市| 南投县| 嫩江县| 眉山市| 会宁县| 郎溪县| 建昌县| 达拉特旗| 都匀市| 克什克腾旗| 蓝山县| 绥德县| 临漳县| 西乡县| 中超| 黎城县| 娄烦县| 日土县| 青铜峡市| 洮南市| 阿图什市| 屯留县| 扶绥县| 阿拉善右旗| 偏关县| 太保市| 遂平县| 化德县| 紫云| 东乡族自治县| 嘉荫县| 金平| 金坛市| 库尔勒市| 稻城县| 松阳县| 阿坝县| 天祝| 长海县| 清远市|