Java 根据输入数据量,将特殊的OutputStream输入内存和文件

Java 根据输入数据量,将特殊的OutputStream输入内存和文件,java,bytearray,inputstream,Java,Bytearray,Inputstream,目前,我正在使用一个SSH客户端api,它将stdout和stderr作为输入流提供给我。我必须在客户端读取这些流中的所有数据,并为实现人员提供一个api,以便他们能够以他们想要的方式处理这些数据(只需删除数据、将其写入数据库、处理数据等)。首先,我尝试将整个数据保存在字节数组中读取,但是对于大量数据(有时可能发生),这可能会导致严重的内存问题。但如果不是真的需要,我不想将每次调用的所有数据写入文件。 有人知道这样一种解决方案,即在将数据从内存写入文件并将inputstream的所有剩余数据附加

目前,我正在使用一个SSH客户端api,它将stdout和stderr作为输入流提供给我。我必须在客户端读取这些流中的所有数据,并为实现人员提供一个api,以便他们能够以他们想要的方式处理这些数据(只需删除数据、将其写入数据库、处理数据等)。首先,我尝试将整个数据保存在字节数组中读取,但是对于大量数据(有时可能发生),这可能会导致严重的内存问题。但如果不是真的需要,我不想将每次调用的所有数据写入文件。

有人知道这样一种解决方案,即在将数据从内存写入文件并将inputstream的所有剩余数据附加到同一文件后,将数据读入内存直到达到限制(如1mb)为止?

在知道如何处理数据流之前,是否可以避免读取数据流

如果使用这种方法,则可以转储数据、读取部分数据并在读取数据时将其写入数据库,或者在读取数据时读取并处理数据


通过这种方式,您在任何时候都不需要读取超过1MB(或更少)的数据流。

在您知道如何处理该数据流之前,您是否可以避免读取该数据流

如果使用这种方法,则可以转储数据、读取部分数据并在读取数据时将其写入数据库,或者在读取数据时读取并处理数据


这样,您在任何时候都不需要读取超过1MB(或更少)的数据。

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

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

这正是我要找的!谢谢这正是我要找的!谢谢我的工作是以某种方式提供数据,并让api的集成商决定如何处理数据。这就是为什么我需要找到一种方法来有效地存储数据,直到数据得到处理。我不明白一种方法是如何遵循另一种方法的。是什么阻止您仅在API的调用方让您知道如何使用数据时才开始检索数据?这种方式的主要目的是,当ssh调用结束时,它会关闭与服务器的连接,因此我应该在连接关闭之前读取它的输出。但是我不知道实现者的代码何时处理数据(整个操作可以异步调用),这就是为什么我应该以某种方式存储所有内容。希望现在更清楚。我会保持ssh连接打开,直到需要它提供的数据。这仍然会在两端提供一个缓冲区,您可以增加缓冲区,这样小的结果将有效地存储在内存中,我的工作是以某种方式提供数据,让api的集成商决定如何处理数据。这就是为什么我需要找到一种方法来有效地存储数据,直到数据得到处理。我不明白一种方法是如何遵循另一种方法的。是什么阻止您仅在API的调用方让您知道如何使用数据时才开始检索数据?这种方式的主要目的是,当ssh调用结束时,它会关闭与服务器的连接,因此我应该在连接关闭之前读取它的输出。但是我不知道实现者的代码何时处理数据(整个操作可以异步调用),这就是为什么我应该以某种方式存储所有内容。希望现在更清楚。我会保持ssh连接打开,直到需要它提供的数据。这仍然会在两端提供一个缓冲区,您可以增加缓冲区,这样小的结果将有效地存储在内存中,但较长的结果将等待发送方。