Java 需要从列表中的每个文件中读取每个N行<;路径>;
我有路径列表,每个路径用文本行表示文件,即每个文件中有10行。 我的任务是读取每个文件的第一行,然后是第二行、第三行,依此类推 到目前为止,尝试使用BufferedReader执行此操作会导致它只读取第一行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 :
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));
}
}
一种可能是将每个文件读入字符串[]数组。第一个下标表示文件数,第二个下标表示每个文件中的行数。一种可能是将每个文件读入字符串[]数组。第一个下标表示文件数,第二个下标表示每个文件中的行数。