0

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;
}
1
  • The recursion is called, but where do you put all the created sub-trees together? Commented Jul 12, 2013 at 11:38

1 Answer 1

1

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

Sign up to request clarification or add additional context in comments.

2 Comments

thanks a lot....worked perfectly. I would also like to know if it is a good approach to make a tree recursively?
For that I will need to see more code, like where nodes and rootNode are declared. note that you override rootNode on every recursive call so at the end it will point to the last deepest file in your directory hierarchy

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.