0

ルートフォルダーのパスを指定してファイルシステムの JTree を作成しようとしていますが、最初は再帰的にリーフ ノードまでのノードを作成して出力しようとしています。

以下は私のコードです。第 1 レベルの後に印刷されない理由がわかりません。おそらく、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;
}
4

1 に答える 1

1

file.list()ディレクトリの相対名のみを返すため、ノードを次の再帰呼び出しに渡すときに親パスを追加する必要があります。

createTree(rootPath + File.seperator + node);

プログラムが実行されるルート パスは変更されないため、ルート パスからのパスなしで相対ファイル名 (ディレクトリ内) を使用しても機能しません。file = new File(<relative-file-name>)

于 2013-07-12T11:38:40.943 に答える