我有一个可能与语言无关的问题,但对于这个特定的实现,我使用的是Java.列出目录中的文件夹是可能且相对简单的 – 使用如下函数:
private DefaultMutableTreeNode GenerateFSTree(File f)
{
int i = 0;
File[] Children = f.listFiles();
DefaultMutableTreeNode x = new DefaultMutableTreeNode(f.getName());
if ( Children != null )
{
for ( i = 0; i < Children.length; i++ )
{
File f_cur = Children[i];
if (
f_cur.isDirectory() &&
( this.DisplayHidden || !f_cur.isHidden() )
)
{
x.add(GenerateFSTree(f_cur));
}
}
}
return x;
}
正如您所看到的,这会大量使用递归来评估文件系统,最终得到的是DefaultMutableTreeNode项的树.
现在我的问题是 – 有更快的方法吗?必须有,因为这很慢.尝试在/上执行此操作,它需要永远.然而,如果我使用Nautilus或内置的Java文件选择对话框,树会立即渲染.
所以我的问题是 – 我怎样才能加快速度呢?
谢谢
解决方法:
标签:java,filesystems,recursion
来源: https://codeday.me/bug/20190606/1189968.html