java - 为什么 InputStreamReader read() 阻塞而不是返回 -1?

标签 java block blocking inputstreamreader

我正在使用 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/

相关文章:

select - ncurses和stdin阻止

java - 是否可以从maven中的一个项目中挑选出依赖项?

Java - 可执行 jar

java - 在线程 "main"java.lang.NoClassDefFoundError : 中获取异常

ios - 返回没有 typedef 的 block 的 Objective-C 方法的语法/签名是什么?

c# - 当用于暂停线程时,循环 Thread.Sleep() 是否会影响性能?

java - JavaFX 8中如何在鼠标拖动事件位置时获取节点?

css - 如何使按钮在单击时消失并显示另一个按钮?

ruby-on-rails - 将 block 传递给 rails3 中的标签助手

c# - 如何在满足条件之前阻止操作?