InputStreamReader должен заканчиваться, если больше нет строк - PullRequest
0 голосов
/ 14 июля 2011

У меня есть InputStreamReader (в сочетании с BufferedReader).

Я хочу прочитать содержимое потока в цикле

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 Ответ

6 голосов
/ 14 июля 2011

Код, который вы получили, будет работать , если достигнет конца потока.

Я предполагаю, что это сетевой поток, а другой конец не закрывает соединение. Однако это не приведет к тому, что вы войдете в цикл до бесконечности - это просто приведет к тому, что вы просто зависаете на вызове readLine, ожидаете, пока другой конец закроет поток, или пока не поступят дополнительные данные.

Вам необходимо либо иметь какой-либо способ определения того, что вы закончили (например, завершающую строку / закрытие соединения) или знать, сколько строк нужно прочитать заранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...