为什么InputStreamReader是read()块而不是返回-1?

时间:2012-01-21 15:11:35

标签: java block blocking inputstreamreader

我正在使用java的InputStreamReader read()函数。当我到达输入流的末尾时,我应该进入我的int变量-1的值,但它转到阻塞。 为什么我不在输入流的末尾得到-1? (我已逐字母调试它,确保它实际上是输入结束并且连接套接字是活的)。

使用ready()函数是一个很好的解决方案:

if (isr.ready())
    currCharVal = isr.read();

提前致谢, 盖

1 个答案:

答案 0 :(得分:4)

如果另一端未关闭连接,则会发生这种情况。当套接字关闭时,read()将返回-1。

根据我的经验,使用就绪和可用是相当不可预测的。我会读取(byte [])直到达到结束并期望另一端在完成时关闭。