Java 对txt文件使用bufferedreader两次?
我必须计算一个文件上的行数,但在代码的后面,我还必须打印该文件中的内容,但我不能使用两次读卡器,它只显示null。我如何在不创建一堆bufferedreader对象的情况下解决这个问题? 谢谢Java 对txt文件使用bufferedreader两次?,java,file,bufferedreader,Java,File,Bufferedreader,我必须计算一个文件上的行数,但在代码的后面,我还必须打印该文件中的内容,但我不能使用两次读卡器,它只显示null。我如何在不创建一堆bufferedreader对象的情况下解决这个问题? 谢谢 同时打印和计数 将行移动到数组中,然后打印它们 请确保在重新打开之前已关闭该文件 请尝试关闭缓冲区,然后重新打开它 BufferedReader bufferedReader = new BufferedReader(new FileReader("src/main/java/com/willia
请尝试关闭缓冲区,然后重新打开它
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();
}
}
您可以使用
BufferedReader
的mark()
和reset()
方法跳回特定位置
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();
}
请注意,
BufferedReader
支持标记,但并非所有读取器都支持标记。您可以使用markSupported()
进行检查。只需关闭流并创建一个新对象,可能会复制并计算您打印的行数即可。当您说“稍后在代码中”时,您是指使用相同的方法吗?您可以始终使用一个行数计数器并打印行数。