【发布时间】:2012-01-21 15:11:34
【问题描述】:
我正在使用 java 的 InputStreamReader read() 函数。当我到达输入流的末尾时,我应该进入我的 int 变量 -1 的值,但相反它会阻塞。 为什么我在输入流的末尾没有得到 -1? (我已经逐个字母地调试它,确保它实际上是输入的结尾并且连接套接字是活动的)。
使用 ready() 函数是一个很好的解决方案吗:
if (isr.ready())
currCharVal = isr.read();
提前致谢, 伙计。
【问题讨论】:
-
底层
InputStream是什么?你能发布更多代码吗? -
定义输入流的“结束”——流可以是任何东西,包括永无止境的网络连接。它的处理方式取决于流类型。
-
"...连接套接字是活动的" - 只要套接字没有关闭,就套接字而言,您还没有到达输入流的末尾。
-
我收到来自 cURL 的 httprequest。我使用标记器读取每个标记 128 个字符。在读取最后一个令牌时,isr.read() 刚刚进入阻塞模式,因为它完成了获取消息。
-
@Guy 这意味着无论出于何种原因,cURL 都不会关闭您正在读取的流。
标签: java block blocking inputstreamreader