特殊的OutputStream可根据输入数据量处理内存和文件

时间:2012-02-29 15:58:57

标签: java bytearray inputstream

目前我正在使用SSH客户端api,将stdout和stderr作为InputStreams提供给我。我必须在客户端读取这些流中的所有数据,并为实现者提供api,以便能够以他们想要的方式处理这些数据(只需删除它,将其写入DB,处理它等)。首先,我试图将整个数据保存在字节数组中,但是有大量数据(有时会发生),这可能会导致严重的内存问题。但是,如果不是真的有必要,我不想把每次调用的所有数据写入文件 在将数据从内存写入文件并将输入流的所有剩余数据附加到同一文件之后,任何人都知道将数据读入内存直到达到限制(如1mb)的解决方案吗?

2 个答案:

答案 0 :(得分:1)

commons io有一个可行的解决方案:DeferredFileOutputStream

答案 1 :(得分:0)

在你知道要用它做什么之前,你可以避免阅读该流吗?

如果您使用这种方法,您可以转储它们,读取部分数据并在读取时将它们写入数据库,或者在读取数据时读取和处理数据。

这样,您一次不需要读取超过1 MB(或更少)的内容。