如何缓冲OutputStream而不使用Java中的任何缓冲区限制?

时间:2012-06-14 19:51:54

标签: java buffer outputstream

这种情况有点复杂,我希望我能很好地简化它。

当我收到PrintStream我应该输出一些数据时,我的任务就开始了。但是整个任务是计算+打印,我可以在完成计算后打印。所以这可能是2次通过任务,但我希望1次通过。

为了实现这一点,我想创建一些输出缓冲区,进行计算和打印(缓冲),然后从缓冲区打印到实际输出流。

到目前为止一直很好,问题是我无法找到适当的缓冲类 - BufferedOutputStream如果我理解正确,当缓冲区已满时开始从缓冲区写入。我必须对它进行更严格的控制 - 直到我确切地这样说才写入实际输出。

问题 - 是否有适合此任务的课程?

2 个答案:

答案 0 :(得分:2)

您可以使用ByteArrayOutputStream作为缓冲区。此流写入的字节数组会自动放大以容纳您编写的所有内容。

完成输出后,只需调用writeTo方法将缓冲区的内容写入写入某个实际设备的输出流。

有关详细信息,请参阅http://docs.oracle.com/javase/6/docs/api/java/io/ByteArrayOutputStream.html

答案 1 :(得分:0)

来自javadoc of the flush method

  

刷新此缓冲的输出流。这会强制任何缓冲输出   要写入基础输出流的字节。