Java 需要从列表中的每个文件中读取每个N行<;路径>;

Java 需要从列表中的每个文件中读取每个N行<;路径>;,java,arrays,bufferedwriter,Java,Arrays,Bufferedwriter,我有路径列表,每个路径用文本行表示文件,即每个文件中有10行。 我的任务是读取每个文件的第一行,然后是第二行、第三行,依此类推 到目前为止,尝试使用BufferedReader执行此操作会导致它只读取第一行 List<String> eachNLineFromEachFile = new ArrayList<>(); for (int i = 0; i < 10; i++) { for (Path tempfile :

我有路径列表,每个路径用文本行表示文件,即每个文件中有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);

            }
        }
List eachNLineFromEachFile=new ArrayList();
对于(int i=0;i<10;i++){
for(路径tempfile:tempFilesList){
BufferedReader tempfileReader=Files.newBufferedReader(tempfile);
字符串行=null;
line=tempfileReader.readLine();
eachnlinefromachfile.add(行);
try(BufferedWriter outputwriter=Files.newBufferedWriter(outputFile)){
write(String.valueOf(eachNLineFromEachFile));
}
System.out.println(每个文件中的每个Hnline);
}
}
到目前为止,它的结果是读取每个文件的每一行,然后重复每一行

如何才能获得工作所需的补偿?即每个循环迭代从下一行开始读取。AFAIK我不应该使用RandomAccessFile,它可能会通过getFilePointer和seek()方法实现这一点)


请提前提供帮助和感谢。

您可以将阅读器添加到数组/列表中,并按如下所示或其中一位用户的建议进行循环-将内容复制到[][]或以键作为行号的地图中,然后执行您想发布的任何操作

List eachNLineFromEachFile=new ArrayList();
//试验用假人。
List tempFilesList=newarraylist();
列表读取器=新的ArrayList();
for(路径tempfile:tempFilesList){
BufferedReader tempfileReader=Files.newBufferedReader(tempfile);
readers.add(tempfileReader);
}
布尔read_complete=false;
while(true){
for(BufferedReader读卡器:读卡器){
字符串行=null;
试一试{
line=reader.readLine();
如果(行==null){
read_complete=true;
打破
}
eachnlinefromachfile.add(行);
System.out.println(每个文件中的每个Hnline);
}捕获(IOE异常){
e、 printStackTrace();
}
}
如果(读完整){
打破
}
}

您可以将读卡器添加到数组/列表中,并按如下所示或其中一位用户的建议进行循环-将内容复制到[][]或以键为行号的地图中,然后执行您想发布的任何操作

List eachNLineFromEachFile=new ArrayList();
//试验用假人。
List tempFilesList=newarraylist();
列表读取器=新的ArrayList();
for(路径tempfile:tempFilesList){
BufferedReader tempfileReader=Files.newBufferedReader(tempfile);
readers.add(tempfileReader);
}
布尔read_complete=false;
while(true){
for(BufferedReader读卡器:读卡器){
字符串行=null;
试一试{
line=reader.readLine();
如果(行==null){
read_complete=true;
打破
}
eachnlinefromachfile.add(行);
System.out.println(每个文件中的每个Hnline);
}捕获(IOE异常){
e、 printStackTrace();
}
}
如果(读完整){
打破
}
}

阅读您的代码时,我希望您的行为与您描述为有问题的行为完全相同。您只需在每次迭代中创建一个新的
BufferedReader
和一个新的
BufferedWriter
,并输出一个值。相反,您需要在第一个周期的第一次迭代中创建一个
BufferedReader
元素数组,并在第二个周期中重复读取/写入行:

 BufferedWriter bf = Files.newBufferedWriter(outputFile);
 BufferedReader[] brs = new BufferedReader[10];
        for (int i = 0; i < 10; i++) {
            brs[i] = Files.newBufferedReader(tempFilesList.get(i));
        }
        for (int outerIndex = 0; outerIndex < 10; outerIndex++) {
            for (int innerIndex = 0; innerIndex < 10; innerIndex++) {
                String line = null;
                line = brs[innerIndex].readLine();
                bf.write(String.valueOf(line));
            }
        }
BufferedWriter bf=Files.newBufferedWriter(outputFile);
BufferedReader[]brs=新的BufferedReader[10];
对于(int i=0;i<10;i++){
brs[i]=Files.newbufferederader(tempFilesList.get(i));
}
对于(int-outerIndex=0;outerIndex<10;outerIndex++){
对于(int-innerIndex=0;innerIndex<10;innerIndex++){
字符串行=null;
line=brs[innerIndex].readLine();
写入(String.valueOf(line));
}
}

阅读您的代码时,我希望您的行为与您描述为有问题的行为完全相同。您只需在每次迭代中创建一个新的
BufferedReader
和一个新的
BufferedWriter
,并输出一个值。相反,您需要在第一个周期的第一次迭代中创建一个
BufferedReader
元素数组,并在第二个周期中重复读取/写入行:

 BufferedWriter bf = Files.newBufferedWriter(outputFile);
 BufferedReader[] brs = new BufferedReader[10];
        for (int i = 0; i < 10; i++) {
            brs[i] = Files.newBufferedReader(tempFilesList.get(i));
        }
        for (int outerIndex = 0; outerIndex < 10; outerIndex++) {
            for (int innerIndex = 0; innerIndex < 10; innerIndex++) {
                String line = null;
                line = brs[innerIndex].readLine();
                bf.write(String.valueOf(line));
            }
        }
BufferedWriter bf=Files.newBufferedWriter(outputFile);
BufferedReader[]brs=新的BufferedReader[10];
对于(int i=0;i<10;i++){
brs[i]=Files.newbufferederader(tempFilesList.get(i));
}
对于(int-outerIndex=0;outerIndex<10;outerIndex++){
对于(int-innerIndex=0;innerIndex<10;innerIndex++){
字符串行=null;
line=brs[innerIndex].readLine();
写入(String.valueOf(line));
}
}

一种可能是将每个文件读入字符串[]数组。第一个下标表示文件数,第二个下标表示每个文件中的行数。一种可能是将每个文件读入字符串[]数组。第一个下标表示文件数,第二个下标表示每个文件中的行数。