我有一個方法,期望輸入變量的一個是java.io.File類型,但我得到的只是InputStream。我無法更改方法的簽名。如何將InputStream轉換爲File類型,而無需將文件寫入文件系統?如何將InputStream轉換爲虛擬文件
61
A
回答
98
像這樣的東西應該工作。請注意,爲了簡單起見,我使用了Java 7功能(嘗試使用可關閉資源的塊)以及Apache commons-io中的IOUtils。如果你不能使用這些,它會更長一些,但是同樣的想法。
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 {
public static final String PREFIX = "stream2file";
public static final String SUFFIX = ".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;
}
}
27
你不能。輸入流只是一個通用的數據流,並不能保證它實際上源於文件。如果有人通過讀取Web服務創建了InputStream,或者只是將String轉換爲InputStream,則無法將其鏈接到文件。因此,您唯一能做的就是將數據從流中寫入臨時文件(例如使用File.createTempFile方法)並將此文件提供給您的方法。
相關問題
- 1. 如何將byte []轉換爲InputStream?
- 2. 如何將InputStream轉換爲DataHandler?
- 3. 如何將對象轉換爲InputStream
- 4. 如何將JSP InputStream轉換爲ServletResponse?
- 5. 如何將javax.xml.transform.Source轉換爲InputStream?
- 6. 如何將InputStream轉換爲Source?
- 7. 將InputStream轉換爲FileInputStream
- 8. 將inputStream轉換爲FileInputStream?
- 9. 將InputStreamReader轉換爲InputStream
- 10. 將InputStream轉換爲BufferedReader
- 11. 將PC轉換爲虛擬手機
- 12. 將字符轉換爲虛擬鍵碼
- 13. 如何在雲上打開「虛擬」文件的inputstream?
- 14. 如何將Jade轉換爲虛擬主機服務中的HTML文件?
- 15. 如何將XLib鍵碼轉換爲Microsoft虛擬鍵值?
- 16. 如何將負值轉換爲虛擬變量?
- 17. 如何將Windows本機虛擬鍵碼轉換爲Qt :: Key?
- 18. 如何將物理路徑轉換爲虛擬路徑在C#
- 19. 如何將虛擬鍵碼轉換爲字符碼?
- 20. java將inputStream轉換爲base64字符串
- 21. 將InputStream(圖片)轉換爲ByteArrayInputStream
- 22. 將SAX ContentHandler字符(..)轉換爲InputStream
- 23. 如何將未壓縮的InputStream有效地轉換爲gzip的InputStream?
- 24. 如何創建虛假/「虛擬」文件?
- 25. 將虛擬目錄下的文件夾轉換爲應用程序,使用WIX
- 26. NAND2Tetris虛擬機轉換器
- 27. 在Java中,如何將InputStream轉換爲字節數組(byte [])?
- 28. 如何將InputStream轉換爲kotlin中的BufferInputStream
- 29. 如何將整數數組轉換爲InputStream?
- 30. 如何將InputStream轉換爲Java中的字符串?
這是一個內置函數嗎?或者它是一種自定義功能? – 2010-11-30 18:20:10
@Richard:*「我無法更改方法的簽名。」* – BalusC 2010-11-30 18:22:45
爲什麼你需要`File`對象而不是InputStream? – Poindexter 2010-11-30 18:23:38