0

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

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

4

2 回答 2

0

我会说打开另一个方向的沟通渠道。然后在关闭时PipedOutputStream,您可以使用 向一侧发送一个字节PipedInputStream,并通过关闭两侧的输出和输入流来做出反应。否则,您会被 try catch 构造所困,没有其他 100% 的方式可以说,另一端的流已关闭,而不是尝试发送数据。

于 2013-10-08T15:02:45.163 回答
0

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

于 2013-10-08T14:57:41.890 回答