Buffered Reader readLine() with Empty lines

偶尔善良 提交于 2019-12-21 12:43:04

问题


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);
}

回答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 ?



回答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




回答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 (...) {

}


来源:https://stackoverflow.com/questions/3527108/buffered-reader-readline-with-empty-lines

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!