简体   繁体   English

在递归Java中写入文件

[英]Writing to file in recursion java

So i want my program to write all files containing ".txt" to "out.txt". 所以我希望我的程序将所有包含“ .txt”的文件写入“ out.txt”。 But wr.close() ends my writer and it only writes the files from one folder and not from all. 但是wr.close()结束了我的编写器,它只从一个文件夹而不是从所有文件夹写入文件。 Need help. 需要帮忙。

import java.io.*;

public class Prv {  
public static void main(String[] args) throws InterruptedException, IOException{

    String a=".";
    String b="D:\\JavaProjects\\Auditoriski\\.\\Out.txt";
    Pomini(a,b);
}

public static void Pomini(String in, String out) throws IOException {
    File file = new File(in);
    BufferedWriter wr = new BufferedWriter(new FileWriter(out));
    if(file.exists()) {
        File[] subfiles = file.listFiles();
        for(File f : subfiles) {
        if(f.isDirectory()) {
            Pomini(f.getAbsolutePath(), out );
        }
        if(f.getName().contains(".txt")) {
            System.out.print(f.getName());
            System.out.println();
            wr.write(f.getName());
            wr.newLine();
        }
        }

    }           
    wr.close();

}
}

You just need to create BufferedWriter and close it outside of your Pomini method and pass it as a parameter. 您只需要创建BufferedWriter并将其关闭到Pomini方法之外,然后将其作为参数传递即可。

try (BufferedWriter wr = new BufferedWriter(new FileWriter(out));) {
  Pomini(a, b, wr);
}

public static void Pomini(String in, String out, BufferedWriter wr) throws IOException {
    File file = new File(in);
    if(file.exists()) {
        File[] subfiles = file.listFiles();
        for(File f : subfiles) {
            if(f.isDirectory()) {
                Pomini(f.getAbsolutePath(), out, wr);
            }
        if(f.getName().contains(".txt")) {
            System.out.print(f.getName());
            System.out.println();
            wr.write(f.getName());
            wr.newLine();
        }
     }

  }           

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM