リムーバブルデバイスで実行するように設計されたJavaアプリケーションがあります。その特徴の1つは、ドライブ上のすべてのフォルダーを一覧表示するように設計されていることですが、ファイルとフォルダーが多いほど、(コンピューターの性能に関係なく)時間がかかり、削除デバイスが大きくなり、最近はもっと大きくなっているので、このプロセスでできるだけスピードを上げることが重要だと思います。
(コーディングではなく、リストの観点から)最良/最速の方法はインデックスファイルを作成することであることを私は知っていますが、それは私のアプリケーションが何であるかという点を見逃していると思います。ですから、理論的には2つでもリストの速度が2倍になるので、スレッドが役立つかもしれないと思いましたが、これが可能かどうかはわかりません。
任意の回答をいただければ幸いです。これが私が現在持っている再帰的な方法です:
private static void recursiveNodeCreation(DefaultMutableTreeNode node, String root){
if(root==null) root = RUNNING_DRIVE = ".";
try{
// Get a list of files/folders in the root directory
File rootDir = new File(root);
File[] files = rootDir.listFiles();
// Loop through the files/folders
for(File current : files){
if(Files.isReadable(current.toPath()) && !current.isHidden() && current.isDirectory()){
DefaultMutableTreeNode folder = new DefaultMutableTreeNode(new FolderOnDrive(current.getName(), current.getPath()));
recursiveNodeCreation(folder, current.getPath());
node.add(folder);
}
}
}catch(Exception e){e.printStackTrace();}
}
(RUNNING_DRIVE
アプリケーションが実行されているドライブのドライブ文字を保持し= "."
ます。テスト中の速度を上げるために追加しました。ご想像のとおり、JTree内のすべてのフォルダーを一覧表示しています。)