当writer已经关闭时,PipedReader.ready()不会抛出异常

时间:2015-11-18 16:51:01

标签: java

我正在使用ready()的{​​{1}}方法来避免阻塞输入,但不幸的是,如果编写器已经离开,则此方法不会抛出IOException(与方法PipedReader相反,但是这个是阻止的。)

有哪些替代方案?是否有一种非阻塞方式来检查作者是否已经离开?

PS:我认为这是read()中的错误,因为当作者离开时ready()返回-1,但read()不断返回ready()

1 个答案:

答案 0 :(得分:0)

这不是ready()中的错误。在javadoc中,如果ready()返回read()false将无法保证下一个ready()将成为一个块。因此,虽然falseIOException,但可以返回-1。

仅在管道损坏,未连接或关闭时才会抛出PipedWriter。但是,我无法确定是否已关闭连接的PipedReaders。也许你可以使用你得到的结果(-1)来识别。 -1也会说流结束。但我认为没有什么不同......

毕竟,为什么要继续使用这些无用的{{1}} .. ??