Skip to content
Advertisement

Using BufferedReader to read Text File

I’m having problems with using the BufferedReader

I want to print the 6 lines of a text file:

public class Reader {

public static void main(String[]args) throws IOException{
    
    FileReader in = new FileReader("C:/test.txt");
    BufferedReader br = new BufferedReader(in);
    
    while (br.readLine() != null) {
        System.out.println(br.readLine());
    }
    in.close();
    
}

Now from what I can gather every time I call the readLine() method it automatically advances to the next line.

So I can’t use the condition br.readLine() != null since it’ll already advance it one line and I get the output:

Line 2
Line 4
Line 6

What Condition do I use to check if there is still a new line in the text field?

Advertisement

Answer

This is the problem:

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

You’ve got two calls to readLine – the first only checks that there’s a line (but reads it and throws it away) and the second reads the next line. You want:

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

Now we’re only calling readLine() once per loop iteration, and using the line that we’ve read both for the “have we finished?” and “print out the line” parts.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement