0

这个案例有点复杂,希望我能简化一下。

当我收到PrintStream我应该输出一些数据的地方时,我的任务就开始了。然而整个任务是计算+打印,当我完成计算时我可以打印。所以这可能是 2-pass 任务,但我希望是 1-pass。

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

到目前为止一切顺利,问题是我无法找到合适的缓冲类——BufferedOutputStream如果我理解正确,当缓冲区已满时开始从缓冲区写入。我必须对其进行更严格的控制——在我明确表示之前不要写入实际输出。

问题——是否有适合这项任务的课程?

4

2 回答 2

2

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

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

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

于 2012-06-14T19:55:56.940 回答
0

flush方法的javadoc

刷新此缓冲输出流。这会强制将任何缓冲的输出字节写出到底层输出流。

于 2012-06-14T19:56:03.727 回答