【发布时间】:2020-12-28 08:38:04
【问题描述】:
我有一个方法应该在文件中写下树视图中给定目录的结构。但它不会记下子文件夹及其文件,所以我尝试添加递归调用,但由于某种原因它不起作用。我该如何解决?
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]
【问题讨论】:
-
您是否尝试过调试它以查看它是否进入文件夹并进行递归调用?
-
递归调用也会多次执行
new FileWriter("D:/info.txt")。这可能不应该是递归的一部分,而是应该只创建一次编写器。此外,如果path不是字段而是readFiles方法的参数,则代码可能会更好地维护。
标签: java io filewriter