在下面编写的代码中,我希望第二个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);
}
答案 0 :(得分:1)
BufferedReader支持mark()
和reset()
。因此,您应该在第一次循环之前调用mark()
,然后在reset()
之后调用它,然后它应该能够再次读取相同的行。
当然,只有当文件不是太大时才这样做,因为BufferedReader必须将所有内容保存在内存中才能执行此操作。
答案 1 :(得分:0)
我会将文件读入List并按照您的需要处理列表。
List<String> lines = FileUtils.readLines(readFile);
for(String line: lines.subList(0,2))
System.out.println("first loop "+line);
for(String line: lines.subList(2, lines.size()))
System.out.println("second loop "+line);
答案 2 :(得分:0)
您可以在稍后要返回的位置放置mark。 (假设您使用该文件不需要太大的预读缓冲区。)
答案 3 :(得分:0)
我应该使用do while循环而不是第二次循环。 这样它也会读取第二行。