用于检查InputStream是否已关闭的习惯用法?

时间:2013-10-08 14:54:56

标签: java file-io inputstream ioexception

我正在使用PipedInputStream在事物之间发送数据。当连接到PipedInputStream的PipedOutputStream关闭时,似乎无法检测到PipedInputStream不再能够读取数据。现在,我正在使用try { ... } catch(IOException e) { ... }

是否有更惯用的方法来检测已关闭的输入流,还是所有Java提供的?我查看了API文档,期待boolean isOpen()或类似内容,但找不到。

2 个答案:

答案 0 :(得分:0)

您可以尝试构建一个观察者模型样式系统,以便在PipedOutputStream关闭时,它会发送PipedInputStream通过侦听器接收的信号。所以在一方面你会有PipedOutputStream.signalClosing(),另一方面你有onOutputStreamClosing(Event e)函数来处理事件(可能是通过设置一个bool,或者只是右边关闭输入流)。

答案 1 :(得分:0)

我会说在其他方向打开通讯渠道。然后当关闭PipedOutputStream时,您可以使用PipedInputStream向侧面发送一个字节,并通过关闭两侧的输出和输入流来做出反应。否则你会遇到try catch构造,除了尝试发送数据之外,没有其他百分之百的说法,即另一侧的流已关闭。