簡體   English   中英

Java:寫入OutputStream,然后將其用作InputStream

[英]Java: Write to OutputStream and then use it as InputStream

我想從遠程存儲中獲取一個文件作為InputStream而不將其保存到本地文件系統。 遠程存儲為Java API提供了一種方法,該方法接受OutputStream並將文件數據轉儲到其中。

void dump(OutputStream dest);

我想出的簡單方法是創建一個臨時文件,將數據轉儲到其中並重新打開它作為InputStream。 但是這種方法會創建一個臨時文件。 有沒有代理文件可以輕松實現相同的結果?

兩種選擇:

記憶

如果所討論的“文件”足夠小以使其可行,則可以將數據讀入ByteArrayOutputStream ,然后使用其toByteArray方法構造要讀取的ByteArrayInputStream

管道

為避免在內存中存儲超過必要的內容,可以使用PipedOutputStreamPipedInputStream

PipedOutputStream

管道輸出流可以連接到管道輸入流以創建通信管道。 管道輸出流是管道的發送端。 通常,數據由一個線程寫入PipedOutputStream對象,而某些其他線程從連接的PipedInputStream讀取數據。

PipedInputStream

管道輸入流應連接到管道輸出流; 然后,管道輸入流提供寫入管道輸出流的任何數據字節。 通常,一個線程從PipedInputStream對象讀取數據,並且某些其他線程將數據寫入相應的PipedOutputStream。

您為API提供輸出流,並從輸入流中讀取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM