首頁 > Java > java教程 > 主體

你能讀取一個輸入流兩次嗎?

DDD
發布: 2024-10-26 17:45:29
原創
417 人瀏覽過

 Can You Read an Input Stream Twice?

輸入流可以讀取兩次嗎?

從網路檢索和儲存資料時,開發人員經常尋求有效的方法。一種這樣的方法涉及多次使用相同的輸入流。這就提出了一個問題:同一個輸入流是否可以讀取兩次?

複製輸入流

一個輸入流不能直接讀取兩次。但是,可以使用 org.apache.commons.io.IOUtils.copy 將其複製到位元組數組中。然後可以使用該陣列建立多個 ByteArrayInputStream 物件以供後續讀取。

範例

使用Apache Commons IO 函式庫,以下是如何讀取輸入流兩次的範例:

<code class="java">ByteArrayOutputStream baos = new ByteArrayOutputStream();
org.apache.commons.io.IOUtils.copy(in, baos);
byte[] bytes = baos.toByteArray();

// either
while (needToReadAgain) {
    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    yourReadMethodHere(bais);
}

// or
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
while (needToReadAgain) {
    bais.reset();
    yourReadMethodHere(bais);
}</code>
登入後複製

注意:雖然此方法適用於圖像等小型流,但它不適合大型或無限流,因為它可能會導致記憶體問題。

以上是你能讀取一個輸入流兩次嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!