2010-12-20 68 views
0

我正在讀取java中的輸入流。只要文件的末尾在輸入流中到達,流就會關閉,我無法再次使用相同的流。有沒有什麼方法可以讓流保持打開狀態,直到我在同一個流上進一步處理。在java中讀取輸入流

回答

1

流不應該因爲您讀到最後而自動關閉。您應該有可能在開始時使用mark(),然後致電reset()以回到標記。但是,這取決於流是否支持該功能。

如果您使用的是文件,您可能需要考慮使用RandomAccessFile。如果它是來自網絡的流,則可能沒有「倒帶」的概念 - 在這種情況下,您應該先讀取所有數據並將其複製到ByteArrayOutputStream中:然後您可以將其轉換爲字節數組並創建爲許多ByteArrayInputStream就像你想要的那樣由相同的數據支持。

1

遇到流尾時,流不會自動關閉。順便說一句,我不知道爲什麼你要保持流打開,如果流的末尾是反正。如果您計劃從流中讀取兩次(由於某種奇怪的原因,在同一個流上進行兩次迭代),您可以關閉第一個並在可能的情況下打開第二個文件(文件流足夠簡單)。另一種方法是讀取整個數據並處理數據,以防處理的數據不太大(這取決於您的應用程序特定需求)。