【发布时间】:2012-12-19 18:55:32
【问题描述】:
我经常将数据备份到外部驱动器,并且必须筛选我拥有和尚未传输的文件。我认为创建一个允许我选择两个目录,比较它们,然后只需单击几下按钮即可传输文件的工具会很有用。
我确信这类项目已经存在,所以对我来说,这主要是一种学习体验。
首先,我有一个方法可以获取我所有的文件夹和文件,以便我可以填充我的树:
public static void listAllFiles(String directory, DefaultMutableTreeNode parent, Boolean recursive) {
File [] children = new File(directory).listFiles();
for (int i = 0; i < children.length; i++) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(children[i].getName());
if (children[i].isDirectory() && recursive) {
parent.add(node);
listAllFiles(children[i].getPath(), node, recursive);
} else if (!children[i].isDirectory()){
parent.add(node);
}
}
}
调用该方法后,我只需创建我的 JTree 并将其添加到我的视图中:
myTree = new JTree(parent);
jScrollPane1.setViewportView(myTree);
所以一旦我有了两个 JTree,我将如何比较节点以查看我的外部文件中不存在哪些文件?只比较文件数组会更容易吗?
编辑
高效,我的意思是在文件树包含数千个文件的情况下,最不可能让计算机陷入困境。
【问题讨论】:
-
您应该比较
TreeModel背后的数据,这最终驱动了JTree。 -
顺便说一句,如果您厌倦了学习体验,您正在寻找的工具称为
rsync。 -
史蒂夫,感谢您的建议。 Vanza,感谢您发布一个可以完成我正在做的事情的工具。我可能会查找它并尽我所能模仿它:)