简体   繁体   English

树java的递归创建

[英]recursive creation of tree java

I am trying to create a JTree of a file system by giving the path of rootfolder, But at first I am trying to create and print nodes upto the leaf node by recursion. 我试图通过提供rootfolder的路径来创建文件系统的JTree,但是首先,我试图通过递归创建并打印直到叶节点的节点。

below is my code ,I am not getting why is it not printing after 1st level, perhaps it is not calling createTree() recursively...can someone tell me how to make it work?(int i=0 is declared outside method) 以下是我的代码,我不明白为什么在第一级之后不打印,也许它没有递归调用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;
}

file.list() returns only the relative names of the directory so you need to append the parent path when passing the node to the next recursive call : file.list()仅返回目录的相对名称,因此在将节点传递到下一个递归调用时,您需要附加父路径:

createTree(rootPath + File.seperator + node);

The root path where your program runs never changes so using relative file name (inside directories) without the path from the root path will not work for file = new File(<relative-file-name>) 程序运行的根路径永远不会更改,因此,使用相对文件名(内部目录)而没有来自根路径的路径不适用于file = new File(<relative-file-name>)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM