简体   繁体   中英

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.

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)

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 :

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>)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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