Buffered Reader readLine() with Empty lines
Solution 1
I could not reproduce your claim that BufferedReader
skips empty lines; it should NOT have.
Here are snippets to show that empty lines aren't just skipped.
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());
}
The output for any of the above snippets is:
0001: line1
0002:
0003:
0004: line4
Related questions
-
How to get line number using scanner - a
LineNumberReader
+Scanner
combo! - How to read a string line per line
- In Java, how to read from a file a specific line, given the line number?
- Read a specific line from a text file
-
Validating input using
java.util.Scanner
- has many examples - what do these symbolic strings mean:
%02d %01d
?
Solution 2
Have you looked at LineNumberReader? Not sure if that will help you.
http://download.oracle.com/javase/6/docs/api/java/io/LineNumberReader.html
Solution 3
It must be the FileReader class that skips newline characters then.
I checked the results of readLine()
again and it didn't include the new line symbol so it is happening between the two classes FileReader and BufferedReader.
BufferedReader br = null;
String s = null;
try {
br = new BufferedReader(new FileReader(fileName));
while ((s = br.readLine()) != null) {
this.charSequence.add(s);
}
} catch (...) {
}
Walt
Updated on October 19, 2020Comments
-
Walt over 3 years
I am using buffered reader to grab a line at a time from a text file. I am trying to also get the line number from the text file using a tracking integer. Unfortunately BufferedReader is skipping empty lines (ones with just /n or the carriage return).
Is there a better way to solve this? Would using scanner work?
Example code:
int lineNumber = 0; while ((s = br.readLine()) != null) { this.charSequence.add(s, ++lineNumber); }