我如何以递归方式遍历和存储目录结构?我正在编写一个应用程序来加载两个文件夹,遍历它们的结构,显示GUI中的差异,并在提示时同步这两个文件夹。
背景:我得到了基本原则(使用树;如果是文件,将其附加到调用目录,如果是dir,追加并递归调用其上的函数),但所有我发现的实现只是我需要的一点点,或者他们吐出一个我无法解决的NullPointerException,因为我不明白他们到底做了什么。我认为我在递归调用或创建子节点的某个地方停留在技术性或怪癖上。
修改 这是我从某处复制的节点类。我最近删除了我的旧putIntoTree函数,我正在开发一个新函数。我一直坚持孩子/父母的创作是如何运作的。
import java.nio.file.Path;
import java.util.*;
abstract class TreeNode implements Iterable<TreeNode> {
private Set<TreeNode> children;
public Path path;
public TreeNode(Path path) {
children = new HashSet<TreeNode>();
this.path = path;
}
public boolean addChild(TreeNode n) {
return children.add(n);
}
public boolean removeChild(TreeNode n) {
return children.remove(n);
}
public Iterator<TreeNode> iterator() {
return children.iterator();
}
}
编辑:我正在尝试让这个树结构在那里工作,但我有点困惑的是精确的括号和泛型是如何工作的。它说“无法解决符号[在我自己尝试定义方法之后的任何事情]”
public class Tree<T> {
private Node<T> root;
public Tree(T rootData) {
root = new Node<T>();
root.data = rootData;
root.children = new ArrayList<Node<T>>();
}
public static class Node<T> {
private T data;
private Node<T> parent;
private List<Node<T>> children;
}
}