PipedInputStream如何从OutputStream读取?

时间:2012-04-12 18:42:33

标签: java java-io

PipedInputStream如何从PipedOutputStream读取?是使用toString()还是有一些隐藏的魔法来访问private成员变量?

2 个答案:

答案 0 :(得分:2)

PipedOutputStream.write(int byte)只会调用protected方法PipedInputStream.receive(int byte),后者只会填充自己的缓冲区。批量读/写方法也是如此。

请注意PipedInputStream中的内部缓冲区不是private而是protected,因此可以使用与protected receive()方法相同的方式访问。但PipedOutputStream可以公平,不会直接访问它。

这当然是有效的,因为protected方法和字段不仅可以通过派生类访问,而且可以通过Wikipedia中显示的完整包来访问。

不需要像“toString”这样的“魔法”。

答案 1 :(得分:0)

通常你有一个后台线程,它从OutputStream读取并将它读取的内容写入PipedInputStream,直到它完成。