我有一个路径列表,每个路径用文本行表示文件,即每个文件中有10行。我的任务是读取每个文件的第一行,然后是第二行、第三行,依此类推。
到目前为止,尝试使用bufferedreader执行此操作会导致它只读取第一行。
List<String> eachNLineFromEachFile = new ArrayList<>();
for (int i = 0; i < 10; i++) {
for (Path tempfile : tempFilesList) {
BufferedReader tempfileReader = Files.newBufferedReader(tempfile);
String line = null;
line = tempfileReader.readLine();
eachNLineFromEachFile.add(line);
try (BufferedWriter outputwriter = Files.newBufferedWriter(outputFile)) {
outputwriter.write(String.valueOf(eachNLineFromEachFile));
}
System.out.println(eachNLineFromEachFile);
}
}
到目前为止,它的结果是读取每个文件的第一行,然后重复每个第一行。
怎样才能得到工作所需的补偿?i、 每次循环迭代从下一行开始读取。afaik我不应该使用randomaccessfile,它可能会使用getfilepointer和seek()方法来完成这个任务。
请提前帮助和感谢。
2条答案
按热度按时间ikfrs5lh1#
阅读您的代码,我会期望与您所描述的有问题的代码具有相同的行为。你只是在创造一个新的世界
BufferedReader
和一个新的BufferedWriter
在每次迭代中,输出一个值。相反,您需要创建一个BufferedReader
第一个循环的第一次迭代中的元素,并在第二个循环中重复读/写行:kqhtkvqz2#
您可以将读取器添加到数组/列表中,并按如下所示或其中一个用户的建议进行循环-将内容复制到[][]或以键作为行号的Map中,然后执行任何您想发布的操作。。。