java - 如何使缓冲读取器从头开始读取而不是使用另一个对象

标签 java bufferedreader

在下面编写的代码中,我希望第二个 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/

相关文章:

java - 将文本文件中的输入读取到数组列表中

java - 在sqlite android中获取现有行的插入语句

java - 如何根据 Predicate 过滤 Iterable?

java - BufferedReader readLine 在遇到空字符串时停止读取

Java BufferedReader 接收空字符串

Java - 在解析文本文件时在某些条件下打破循环

java - Java 中的链接输入流

java - 如何验证通用 map 是否为空

java - 类型删除如何在 Java 中用于通配符?

java - 如何从文件中逐行读取,在第二个空格后拆分,以便将名称和分数分开?