如何解决递归方法不适用于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);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。