在下面编写的代码中,我希望第二个 while 循环从第一个 while 循环正在使用的同一文件的第二行读取。截至目前,第二个 while 循环正在从文件的第三行读取。 我可以通过使用另一个缓冲阅读器来做到这一点。但还有其他更好的方法吗?
filename = data1
readFile = new File(filename);
BufferedReader reader = null;
try
{
reader = new BufferedReader( new FileReader(readFile) );
}
catch (IOException ioe)
{
System.err.println("Error: " + e.getMessage());
}
String newline;
int secondRecord = 0;
while((secondRecord < 2) && ((newline = readline(reader)) != null))
{
System.out.println(newline);
secondRecord ++;
}
while ((newline = readline(reader)) != null)
{
System.out.println(newline);
}
最佳答案
BufferedReader 支持 mark()
和 reset()
。因此,您应该在第一个循环之前调用 mark()
,并在其之后调用 reset()
,然后它应该能够再次读取相同的行。
当然,只有在文件不太大时才执行此操作,因为 BufferedReader 必须将所有内容保留在内存中才能执行此操作。
关于java - 如何使缓冲读取器从头开始读取而不是使用另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5910628/