i have to count the lines on a file but later in the code I also have to print what's in that file, but I can't use the reader twice it just says null. How can I work this out without creating a bunch of bufferedreader objects? thanks
Asked
Active
Viewed 479 times
0
-
2just close the stream and create a new object, possible duplicate of http://stackoverflow.com/questions/5421653/reset-buffer-with-bufferedreader-in-java and http://stackoverflow.com/questions/262618/java-bufferedreader-back-to-the-top-of-a-text-file – riteshtch Mar 06 '16 at 19:53
-
count the number of lines you print instead.? – DMO-NZ Mar 06 '16 at 19:54
-
When you say 'later in the code' do you mean in the same method? You can always have a counter for the number of lines and print the lines. – Rahul Sharma Mar 06 '16 at 20:00
3 Answers
0
- Print and count at the same time?
- Move the lines to an array then print them?
- Make sure you've closed the file before reopening again?

Mark Sheekey
- 608
- 7
- 23
0
Try closing the buffer, and then re-opening it again.
BufferedReader bufferedReader = new BufferedReader(new FileReader("src/main/java/com/william/sandbox/stackoverflow/samples20160306/Demo.java"));
String line = bufferedReader.readLine();
int lineCount = 0;
while(line != null){
lineCount += 1;
line = bufferedReader.readLine();
}
System.out.println("Line count is: " + lineCount);
bufferedReader.close();
bufferedReader = new BufferedReader(new FileReader("src/main/java/com/william/sandbox/stackoverflow/samples20160306/Demo.java"));
line = bufferedReader.readLine();
while(line != null){
System.out.println(line);
line = bufferedReader.readLine();
}
}

W. Lee
- 105
- 5
-1
You can use BufferedReader
's mark()
and reset()
methods to jump back to a specific position.
try (BufferedReader r = new BufferedReader(new FileReader("somefile.txt"))) {
// marks this position for the next 10 characters read
// after that the mark is lost
r.mark(10);
// do some reading
// jump back to the mark
r.reset();
}
Note that, BufferedReader
supports marking but not all Reader
s do. You can use markSupported()
to check.

nyname00
- 2,496
- 2
- 22
- 25