Buffered Reader readLine() с пустыми строками
Я использую буферизованный ридер, чтобы получить строку из текстового файла за раз. Я пытаюсь также получить номер строки из текстового файла, используя целое число отслеживания. К сожалению, BufferedReader пропускает пустые строки (те, которые имеют только /n или возврат каретки).
Есть ли лучший способ решить эту проблему? Будет ли работать сканер?
Пример кода:
int lineNumber = 0;
while ((s = br.readLine()) != null) {
this.charSequence.add(s, ++lineNumber);
}
3 ответа
Я не мог воспроизвести ваше утверждение о том, что BufferedReader
пропускает пустые строки; это не должно иметь.
Вот фрагменты, показывающие, что пустые строки не просто пропускаются.
java.io.BufferedReader
String text = "line1\n\n\nline4";
BufferedReader br = new BufferedReader(new StringReader(text));
String line;
int lineNumber = 0;
while ((line = br.readLine()) != null) {
System.out.printf("%04d: %s%n", ++lineNumber, line);
}
java.io.LineNumberReader
String text = "line1\n\n\nline4";
LineNumberReader lnr = new LineNumberReader(new StringReader(text));
String line;
while ((line = lnr.readLine()) != null) {
System.out.printf("%04d: %s%n", lnr.getLineNumber(), line);
}
java.util.Scanner
String text = "line1\n\n\nline4";
Scanner sc = new Scanner(text);
int lineNumber = 0;
while (sc.hasNextLine()) {
System.out.printf("%04d: %s%n", ++lineNumber, sc.nextLine());
}
Выход для любого из вышеупомянутых фрагментов:
0001: line1
0002:
0003:
0004: line4
Смежные вопросы
- Как получить номер строки с помощью сканера -
LineNumberReader
+Scanner
комбо! - Как читать строку строки в строке
- В Java, как прочитать из файла определенную строку, учитывая номер строки?
- Читать конкретную строку из текстового файла
- Подтверждение ввода с использованием
java.util.Scanner
- есть много примеров - что означают эти символьные строки:
%02d %01d
?
Это должен быть класс FileReader, который пропускает символы новой строки.
Я проверил результаты readLine()
снова, и он не включал символ новой строки, так что это происходит между двумя классами FileReader и BufferedReader.
BufferedReader br = null;
String s = null;
try {
br = new BufferedReader(new FileReader(fileName));
while ((s = br.readLine()) != null) {
this.charSequence.add(s);
}
} catch (...) {
}
Вы смотрели на LineNumberReader? Не уверен, поможет ли это вам.
http://download.oracle.com/javase/6/docs/api/java/io/LineNumberReader.html