如果没有更多行,则InputStreamReader应该结束

时间:2011-07-14 16:46:02

标签: java stream

我有InputStreamReader(与BufferedReader合并)。

我想在循环中阅读Stream的内容

while((line = MyStream.readLine()) != null) {
    s.o.p(line);
    String lastline; 
}

但这会创建一个没有结束的循环,所以我的整个程序等待循环结束..等待...等待。

目前,我有一种方法可以说明应该读取多少行。这很好,但是非常不灵活。

我的方法

public void getStatus(int times) throws IOException {
    for (int i = 0; i < times; i++) {
        System.out.println(fromServer.readLine());
    }

我希望此方法读取所有行并将最后一行保存在不带“times”参数的字符串中。

1 个答案:

答案 0 :(得分:6)

如果它到达流的末尾,您获得的代码将

我的猜测是,这是一个网络流,另一端没有关闭连接。这不会最终导致您无限制地进入循环广告 - 它最终只会挂在readLine呼叫上,等待另一端关闭流,或者更多数据到到达。

你需要 有一些检测你已经完成的方法(例如终止线/连接关闭)知道要提前读取多少行