PipedInputStream
如何从PipedOutputStream
读取?是使用toString()
还是有一些隐藏的魔法来访问private
成员变量?
答案 0 :(得分:2)
PipedOutputStream.write(int byte)
只会调用protected
方法PipedInputStream.receive(int byte)
,后者只会填充自己的缓冲区。批量读/写方法也是如此。
请注意PipedInputStream
中的内部缓冲区不是private
而是protected
,因此可以使用与protected
receive()
方法相同的方式访问。但PipedOutputStream
可以公平,不会直接访问它。
这当然是有效的,因为protected
方法和字段不仅可以通过派生类访问,而且可以通过Wikipedia中显示的完整包来访问。
不需要像“toString”这样的“魔法”。
答案 1 :(得分:0)
通常你有一个后台线程,它从OutputStream读取并将它读取的内容写入PipedInputStream,直到它完成。