目前,我正在使用SSH客戶端API,爲我提供stdout和stderr作爲InputStreams。我必須在客戶端讀取來自這些流的所有數據,併爲實現者提供api,以便能夠按照他們想要的方式處理這些數據(只需將其刪除,寫入數據庫,處理數據等)。首先,我嘗試將整個數據保存在字節數組中,但是有大量數據(有時會發生),這可能會導致嚴重的內存問題。但是我不想將每個調用的所有數據寫入文件,如果這不是真的必要的話。
任何人都知道一種解決方案,它將數據從內存寫入文件並將輸入流的所有其餘數據附加到同一文件後,纔會將數據讀入內存,直至達到極限(如1mb)爲止?根據輸入數據量,將特殊OutputStream工作到內存和文件
回答
commons io有一個可行的解決方案:DeferredFileOutputStream。
你能否避免在閱讀流之後才知道你將如何處理它?
如果您使用這種方法,您可以轉儲它們,讀取部分數據並在讀取數據時將其寫入數據庫,或者在讀取數據時讀取和處理數據。
這樣你就不需要在任何時候讀取超過1MB(或更少)。
我的工作是以某種方式提供數據,並讓api的集成商決定如何處理數據。這就是爲什麼我需要找到一種方法來有效地存儲數據,直到它被處理。 – marczeeee 2012-03-01 08:14:25
我不明白如何跟隨對方。當API的調用者讓你知道它將如何使用時,什麼會阻止你開始檢索數據? – 2012-03-01 08:17:58
這樣做的主要原因是,當ssh調用結束時,它會關閉到服務器的連接,所以我應該在連接關閉前讀取它的輸出。但我不知道數據何時由實現者的代碼處理(整個操作可以被異步調用),這就是爲什麼我應該以某種方式存儲所有東西。希望現在更清楚。 – marczeeee 2012-03-01 09:25:48
- 1. 將Excel數據直接寫入OutputStream(限制內存消耗)
- 2. 如何輸入特殊字符像甲骨文「和」數據庫?
- 3. 來自OutputStream(Java)的文件中的數據輸入不正確
- 4. 將數據框寫入有特殊要求的csv文件
- 5. 根據用戶輸入安排工作
- 6. 文件輸入/輸出,存儲數據
- 7. 如何將數據從OutputStream放入ByteBuffer?
- 8. 將文本文件數據導入到excel工作簿VBA
- 9. 將用戶輸入的數據保存到文件
- 10. 數據幀,輸入和輸出文件
- 11. 輸入的數據文件.txt和輸出特定的數據使用Python
- 12. 將輸入文件內容保存到變量
- 13. 將數據傳輸到特定工作表在Excel
- 14. 使用CURL將特定數據輸入到數據庫中
- 15. 輸入整數 - 將值輸入到數據類型變量float
- 16. 文件存在與特殊文件夾不工作在Windows七
- 17. 將特殊字符數據,如「黃金黃」等特殊字符保存到數據庫中
- 18. 將特殊字符保存到MySQL數據庫
- 19. 如何將特殊字符插入到Advantage SQL數據庫中?
- 20. 將特殊字符插入到MySql blob時數據丟失
- 21. 根據輸入文件路徑的
- 22. 根據用戶輸入創建文件
- 23. 將數據從InputStream傳輸到Java中的OutputStream
- 24. Spring Config文件根據輸入填充不同的bean數據
- 25. 如何將輸入到文本框中的數據保存到數據庫中?
- 26. 根據文件數量將文件從文件夾移動到新文件夾
- 27. 輸入到UNIX外殼採用特殊的工作目錄
- 28. 將輸入數據保存到文件中並從文件中加載
- 29. 將動態輸入名稱的數據保存到數據庫?
- 30. 根據EditText的內容寫入文件
這就是我一直在尋找的!謝謝! – marczeeee 2012-03-01 08:09:49