2012-02-29 31 views
1

目前,我正在使用SSH客戶端API,爲我提供stdout和stderr作爲InputStreams。我必須在客戶端讀取來自這些流的所有數據,併爲實現者提供api,以便能夠按照他們想要的方式處理這些數據(只需將其刪除,寫入數據庫,處理數據等)。首先,我嘗試將整個數據保存在字節數組中,但是有大量數據(有時會發生),這可能會導致嚴重的內存問題。但是我不想將每個調用的所有數據寫入文件,如果這不是真的必要的話。
任何人都知道一種解決方案,它將數據從內存寫入文件並將輸入流的所有其餘數據附加到同一文件後,纔會將數據讀入內存,直至達到極限(如1mb)爲止?根據輸入數據量,將特殊OutputStream工作到內存和文件

回答

0

你能否避免在閱讀流之後才知道你將如何處理它?

如果您使用這種方法,您可以轉儲它們,讀取部分數據並在讀取數據時將其寫入數據庫,或者在讀取數據時讀取和處理數據。

這樣你就不需要在任何時候讀取超過1MB(或更少)。

+0

我的工作是以某種方式提供數據,並讓api的集成商決定如何處理數據。這就是爲什麼我需要找到一種方法來有效地存儲數據,直到它被處理。 – marczeeee 2012-03-01 08:14:25

+0

我不明白如何跟隨對方。當API的調用者讓你知道它將如何使用時,什麼會阻止你開始檢索數據? – 2012-03-01 08:17:58

+0

這樣做的主要原因是,當ssh調用結束時,它會關閉到服務器的連接,所以我應該在連接關閉前讀取它的輸出。但我不知道數據何時由實現者的代碼處理(整個操作可以被異步調用),這就是爲什麼我應該以某種方式存儲所有東西。希望現在更清楚。 – marczeeee 2012-03-01 09:25:48

相關問題