递归方法不适用于FileWriter

问题描述

我有一种方法,该方法应在文件中以树状视图记录给定目录的结构。但是它不会写下子文件夹及其文件,因此我尝试添加一个递归调用,但是由于某种原因,它不起作用。我该如何解决

public void readFiles() {
        File baseDirectory = new File(path);
        if (baseDirectory.isDirectory()) {
            try (FileWriter writer = new FileWriter("D:/info.txt")) {
                for (File file : baseDirectory.listFiles()) {
                        if (file.isFile()) {
                            writer.append(" |------ " + file.getName());
                            writer.append("\n");
                        } else if (file.isDirectory()) {
                            writer.append(" |+++++ " + file.getName());
                            writer.append("\n");
                            path = file.getPath().replace("\\","/");
                            readFiles(); // recursive call here

                        }
                }
                writer.flush();
            } catch (IOException ex) {
                ex.printstacktrace();
            }
        }

主类:

public class Runner {
    public static void main(String[] args) {
        TreeViewer treeViewer = new TreeViewer();
        treeViewer.setPath("D:/test");
        treeViewer.readFiles();
    }
}

[输出文件示例:][1]

解决方法

尝试一下。

static void tree(File file,String indent,Writer out) throws IOException {
    out.write(indent + file.getName() + System.lineSeparator());
    if (file.isDirectory())
        for (File child : file.listFiles())
            tree(child,indent + "  ",out);
}

public static void main(String[] args) throws IOException {
    try (Writer out = new FileWriter("D:/info.txt")) {
        tree(new File("D:/test"),"",out);
    }
}