递归创建树java

时间:2013-07-12 11:33:49

标签: java swing file-io recursion jtree

我试图通过提供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;
}

1 个答案:

答案 0 :(得分:1)

file.list()仅返回目录的相对名称,因此在将节点传递给下一个递归调用时需要附加父路径:

createTree(rootPath + File.seperator + node);

程序运行的根路径永远不会更改,因此使用相对文件名(内部目录)而没有来自根路径的路径将不适用于file = new File(<relative-file-name>)