我正在使用PipedInputStream在事物之间发送数据。当连接到PipedInputStream的PipedOutputStream关闭时,似乎无法检测到PipedInputStream不再能够读取数据。现在,我正在使用try { ... } catch(IOException e) { ... }
。
是否有更惯用的方法来检测已关闭的输入流,还是所有Java提供的?我查看了API文档,期待boolean isOpen()
或类似内容,但找不到。
答案 0 :(得分:0)
您可以尝试构建一个观察者模型样式系统,以便在PipedOutputStream
关闭时,它会发送PipedInputStream
通过侦听器接收的信号。所以在一方面你会有PipedOutputStream.signalClosing()
,另一方面你有onOutputStreamClosing(Event e)
函数来处理事件(可能是通过设置一个bool,或者只是右边关闭输入流)。
答案 1 :(得分:0)
我会说在其他方向打开通讯渠道。然后当关闭PipedOutputStream
时,您可以使用PipedInputStream
向侧面发送一个字节,并通过关闭两侧的输出和输入流来做出反应。否则你会遇到try catch构造,除了尝试发送数据之外,没有其他百分之百的说法,即另一侧的流已关闭。