我正在使用 java 的 InputStreamReader read() 函数。当我到达输入流的末尾时,我应该进入我的 int 变量 -1 的值,但它会阻塞。 为什么我在输入流的末尾没有得到 -1? (我逐个字母地调试它,确保它实际上是输入的末尾并且连接套接字是 Activity 的)。
使用 ready() 函数是一个很好的解决方案吗:
if (isr.ready())
currCharVal = isr.read();
提前致谢, 盖伊。
最佳答案
如果另一端没有关闭连接,就会发生这种情况。当套接字关闭时,read() 将返回 -1。
根据我的经验,使用 ready 和 available 是相当不可预测的。我会一直读取 (byte[]) 直到结束,并期望另一端在完成时关闭。
关于java - 为什么 InputStreamReader read() 阻塞而不是返回 -1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8954043/