4

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

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

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

在此先感谢,盖伊。

4

1 回答 1

4

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

根据我的经验,使用 ready 和 available 是相当不可预测的。我只会读(字节[])直到到达终点,并期望另一端在完成后关闭。

于 2012-01-21T15:18:50.587 回答