在java中如何將inputStream對(duì)象轉(zhuǎn)換為File對(duì)象(不生成本地文件)
需求說明
在后端中通過POI生成Excel文件流,將輸出流(outputStream)轉(zhuǎn)為輸入流(inputStream)后又需要將輸入流(inputStream)轉(zhuǎn)為File對(duì)象
問題:如果需要將輸入流(inputStream)轉(zhuǎn)為File對(duì)象,則必須要根據(jù)本地路徑去生成一個(gè)File對(duì)象才行,也就是說不管怎樣本地都必須要生成出來一個(gè)文件
問題解決
在經(jīng)過一系列的資料查詢后,發(fā)現(xiàn)如下方式可以大致滿足需求
import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class StreamUtil {
static final String PREFIX = "stream2file";//前綴字符串定義文件名;必須至少三個(gè)字符
static final String SUFFIX = ".tmp";//后綴字符串定義文件的擴(kuò)展名;如果為null,則將使用后綴".tmp"
public static File stream2file (InputStream in) throws IOException {
final File tempFile = File.createTempFile(PREFIX, SUFFIX);
tempFile.deleteOnExit();
try (FileOutputStream out = new FileOutputStream(tempFile)) {
IOUtils.copy(in, out);
}
return tempFile;
}
}我們運(yùn)行以上程序后tempFile即為我們需要的File對(duì)象。
看到這里你可能會(huì)好奇,這不是也在本地生成了個(gè)文件嗎?
但是它生成的文件位置是存儲(chǔ)在以下的(計(jì)算機(jī)的臨時(shí)文件目錄中),所以可以看成沒有在本地生成文件:
C:\Users\TP\AppData\Local\Temp\tmp2447618135336474361.txt
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- java中InputStream轉(zhuǎn)為MultipartFile的解決方案
- Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=111
- Java IO流操作(PipeInputStream、SequenceInputStream、BufferedInputStream)
- Java中的轉(zhuǎn)換流InputStreamReader解讀
- Java中的ByteArrayInputStream詳解
- java用字節(jié)數(shù)組解決FileInputStream讀取漢字出現(xiàn)亂碼問題
- Java中語音url轉(zhuǎn)換成InputStream的示例代碼
相關(guān)文章
springboot yml定義屬性,下文中${} 引用說明
這篇文章主要介紹了springboot yml定義屬性,下文中${} 引用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
解決Error occurred during initialization o
這篇文章主要介紹了解決Error occurred during initialization of VM Java虛擬機(jī)初始化失敗問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
Java中用于SMB/CIFS網(wǎng)絡(luò)的JCIFS庫的用法詳解
JCIFS是一個(gè)強(qiáng)大的庫,允許Java應(yīng)用程序無縫地與SMB/CIFS資源進(jìn)行交互,本文將探討JCIFS的概念和工作原理以及如何在?Java?應(yīng)用程序中有效使用它,希望對(duì)大家有所幫助2024-12-12
SpringBoot加載配置文件的實(shí)現(xiàn)方式總結(jié)
在實(shí)際的項(xiàng)目開發(fā)過程中,我們經(jīng)常需要將某些變量從代碼里面抽離出來,放在配置文件里面,以便更加統(tǒng)一、靈活的管理服務(wù)配置信息。所以本文將為大家總結(jié)一下SpringBoot加載配置文件的常用方式,需要的可以參考一下2022-03-03
java多線程編程必備volatile與synchronized深入理解
這篇文章主要介紹了java多線程編程必備volatile與synchronized的深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
詳解Java實(shí)現(xiàn)負(fù)載均衡的幾種算法代碼
本篇文章主要介紹了詳解Java實(shí)現(xiàn)負(fù)載均衡的幾種算法代碼 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
Myeclipse部署Tomcat_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章給大家介紹了Myeclipse部署Tomcat的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-07-07
Java二分查找算法實(shí)現(xiàn)代碼實(shí)例
這篇文章主要介紹了Java二分查找算法實(shí)現(xiàn)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11

