![](/img/trans.png)
[英]Easy way to write contents of a Java InputStream to an OutputStream
[英]Java: Write to OutputStream and then use it as InputStream
我想從遠程存儲中獲取一個文件作為InputStream而不將其保存到本地文件系統。 遠程存儲為Java API提供了一種方法,該方法接受OutputStream並將文件數據轉儲到其中。
void dump(OutputStream dest);
我想出的簡單方法是創建一個臨時文件,將數據轉儲到其中並重新打開它作為InputStream。 但是這種方法會創建一個臨時文件。 有沒有代理文件可以輕松實現相同的結果?
兩種選擇:
如果所討論的“文件”足夠小以使其可行,則可以將數據讀入ByteArrayOutputStream
,然后使用其toByteArray
方法構造要讀取的ByteArrayInputStream
。
為避免在內存中存儲超過必要的內容,可以使用PipedOutputStream
和PipedInputStream
。
PipedOutputStream
:
管道輸出流可以連接到管道輸入流以創建通信管道。 管道輸出流是管道的發送端。 通常,數據由一個線程寫入
PipedOutputStream
對象,而某些其他線程從連接的PipedInputStream
讀取數據。
PipedInputStream
:
管道輸入流應連接到管道輸出流; 然后,管道輸入流提供寫入管道輸出流的任何數據字節。 通常,一個線程從PipedInputStream對象讀取數據,並且某些其他線程將數據寫入相應的PipedOutputStream。
您為API提供輸出流,並從輸入流中讀取。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.