私は頻繁にデータを外付けドライブにバックアップしており、持っているファイルとまだ転送していないファイルを選別する必要があります。2 つのディレクトリを選択して比較し、ボタンを数回クリックするだけでファイルを転送できるツールを作成すると便利だと思いました。
この種のプロジェクトはすでに存在していると思いますので、私にとっては主に学習体験です。
まず、すべてのフォルダーとファイルを取得して、ツリーにデータを入力できるようにするメソッドがあります。
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);
2 つの JTree を取得したら、ノードを比較して外部に存在しないファイルを確認するにはどうすればよいでしょうか。ファイルの配列を比較する方が簡単でしょうか?
編集
効率的とは、ファイル ツリーが何千ものファイルで構成されている場合に、コンピューターが停止する可能性が最も低いことを意味します。