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.
Thanks in advance!
Why Should Developers Use the BufferedReader Class in Java? BufferedReader reduces the number of I/O operations that would otherwise be needed to read a piece of data by reading the data in chunks and then storing it in an internal buffer.
Class BufferedReader. Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines. The buffer size may be specified, or the default size may be used. The default is large enough for most purposes.
The BufferedReader class of Java is used to read the stream of characters from the specified source (character-input stream). The constructor of this class accepts an InputStream object as a parameter.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With