Чтение следующей строки InputStream Java - PullRequest
3 голосов
/ 26 апреля 2011

У меня есть InputStream, который будет читать из текстового файла. Я заметил, что входной поток не читает из пустой строки.

Пример текстового файла:

[This is

A test file

Here.]

Код:

while ((str = br.readLine())!= null) {
    System.out.println(str);
}

В некоторых текстовых файлах может быть несколько разрывных строк между ними. Как я могу получить входной поток, чтобы принять разрыв строки?

Как видно из примера текстового файла, за «[Это» следует пустая строка, а затем - «Тестовый файл». Как мне прочитать пустую строку между двумя наборами строк? (Это мое определение разрыва строки / разрыва строки)

Ответы [ 3 ]

3 голосов
/ 26 апреля 2011

Вы имеете в виду?

while ((str = br.readLine())!= null && str.trim().length()>0) {
    System.out.println(str);
}

Это дает вам все непустые строки.

1 голос
/ 26 апреля 2011

BufferedReader будет читать все строки в файле независимо от того, пустые они или нет.Он будет искать разрывы строк: LF + CR в Windows и LF в GNU / Linux.Согласно документации BufferedReader:

Строка считается завершенной любым из перевода строки ('\ n'), возврата каретки ('\ r') или возврата кареткисразу же следует перевод строки.

Итак, это зависит от того, как на самом деле выглядит ваш текстовый файл.У него действительно есть возврат каретки и перевод строки между строками или это просто так?Вы можете узнать это, посмотрев файл в шестнадцатеричном редакторе (LF - 0x0A, а CR - 0x0D).Если это так, то BufferedReader должен выдавать вам эти пустые строки.

0 голосов
/ 27 апреля 2011

Извините за ошибку, это BufferedReader, принимающий InputStream.BufferedReader действительно прочитал каждую строку, включая следующую строку / разрыв строки / перевод строки.Проблема была в том, что мой алгоритм, который я написал, просто пропустил следующую строку / разрыв строки / разрыв строки.Извините за хлопоты и неприятности.

Спасибо за все ответы.

...