我有一个设计为在可移动设备上运行的 Java 应用程序。它的一个特点是它旨在列出驱动器上的所有文件夹,但显然文件和文件夹越多,花费的时间就越多(不管计算机有多强大),并且移除设备越来越大,这些天来更大,我认为在这个过程中获得尽可能快的速度是很重要的。
我知道最好/最快(就列表而言,而不是编码而言)方法是创建一个索引文件,但我认为这错过了我的应用程序的全部意义。所以,我想也许线程会有所帮助,因为理论上,即使是两个线程也会使上市速度提高一倍,但我不知道这是否可能,如果可以,如何?
任何答案将不胜感激。这是我目前拥有的递归方法:
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 中的所有文件夹。)