java中MultipartFile和File最簡單的互相轉(zhuǎn)換示例
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)文章
springboot+swagger2.10.5+mybatis-plus 入門詳解
這篇文章主要介紹了springboot+swagger2.10.5+mybatis-plus 入門,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
springcloud3 Sentinel的搭建及案例操作方法
Sentinel是分布式系統(tǒng)流量控制的哨兵,阿里開源的一套服務(wù)容錯(cuò)的綜合性解決方案,這篇文章主要介紹了springcloud3 Sentinel的搭建以及案例操作,需要的朋友可以參考下2023-01-01
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)行讀寫,詳細(xì)的介紹了RandomAccessFile類的使用技巧和實(shí)例應(yīng)用,有興趣的可以了解一下2017-04-04
spring aop底層源碼執(zhí)行邏輯剖析(源碼解析)
這篇文章主要介紹了spring aop底層源碼執(zhí)行邏輯剖析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-08-08

