簡體   English   中英

樹java的遞歸創建

[英]recursive creation of tree java

我試圖通過提供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;
}

file.list()僅返回目錄的相對名稱,因此在將節點傳遞到下一個遞歸調用時,您需要附加父路徑:

createTree(rootPath + File.seperator + node);

程序運行的根路徑永遠不會更改,因此,使用相對文件名(內部目錄)而沒有來自根路徑的路徑不適用於file = new File(<relative-file-name>)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM