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.