我试图通过提供rootfolder的路径来创建文件系统的JTree, 但首先,我试图通过递归创建并打印到叶节点上的节点。
下面是我的代码,我不明白为什么它不是在第一级之后打印,也许它不是递归地调用createTree()...有人能告诉我如何让它工作吗?(int i = 0声明外部方法)
public void createTree(String rootPath)
{
rootNode=new DefaultMutableTreeNode(rootPath);
File file=new File(rootPath);
if(file.isDirectory()&&file.list()!=null)
{
System.out.printf("\nThis folder contains %d files/folders\n" , file.list().length);
for(String node:file.list())
{
nodes[i]=new DefaultMutableTreeNode(node);
System.out.println(" - "+nodes[i]);
createTree(node);
i++;
}
}
else if(file.isFile())
{
nodes[i]=new DefaultMutableTreeNode(rootPath);
i++;
return;
}
else
return;
}
答案 0 :(得分:1)
file.list()
仅返回目录的相对名称,因此在将节点传递给下一个递归调用时需要附加父路径:
createTree(rootPath + File.seperator + node);
程序运行的根路径永远不会更改,因此使用相对文件名(内部目录)而没有来自根路径的路径将不适用于file = new File(<relative-file-name>)