这种情况有点复杂,我希望我能很好地简化它。
当我收到PrintStream
我应该输出一些数据时,我的任务就开始了。但是整个任务是计算+打印,我可以在完成计算后打印。所以这可能是2次通过任务,但我希望1次通过。
为了实现这一点,我想创建一些输出缓冲区,进行计算和打印(缓冲),然后从缓冲区打印到实际输出流。
到目前为止一直很好,问题是我无法找到适当的缓冲类 - BufferedOutputStream
如果我理解正确,当缓冲区已满时开始从缓冲区写入。我必须对它进行更严格的控制 - 直到我确切地这样说才写入实际输出。
问题 - 是否有适合此任务的课程?
答案 0 :(得分:2)
您可以使用ByteArrayOutputStream作为缓冲区。此流写入的字节数组会自动放大以容纳您编写的所有内容。
完成输出后,只需调用writeTo
方法将缓冲区的内容写入写入某个实际设备的输出流。
有关详细信息,请参阅http://docs.oracle.com/javase/6/docs/api/java/io/ByteArrayOutputStream.html
答案 1 :(得分:0)
来自javadoc of the flush method:
刷新此缓冲的输出流。这会强制任何缓冲输出 要写入基础输出流的字节。