1

Angular ツリー ビューが使用するツリー ビュー構造を作成するために使用できる再帰関数を考え出そうとしています。

構造を示すリンクは次のとおりです: https://github.com/eu81273/angular.treeview

サーバー上のファイル ディレクトリに基づいてツリー ビューを作成しようとしていて、JSON を使用して Java コードからそれを返したいと考えていました。私は主に、ディレクトリをループして子で必要な構造を作成する関数の作成に苦労しています。

サーバー側のツリー ビュー構造を反映する POJO クラスを作成しました。私はこの関数の基礎として次の関数を使用しようとしていました:

private static void listFiles(File rootDir, String[] files){
    for (String fileName: files){
        File fileOrDir = new File(rootDir, fileName); 
        if (fileOrDir.isDirectory()){
            listFiles(fileOrDir, fileOrDir.list());
        } else {
            System.out.println(fileOrDir); 
        }
    }
}

オブジェクトがどのように見えるかのクリップは次のとおりです。

public class AngularTreeview {
private String label; 
private String id; 
private Collection<AngularTreeview> children;
}

関数に関する提案は素晴らしいでしょう。また、サーバー上のファイル システムを参照する方法や、ツリー ビュー構造を作成する簡単な方法についての代替案も役立ちます。ありがとう!

4

2 に答える 2

0
public static int level = 0;

private static void listFiles(File rootDir, String[] files){

    String name = rootDir.toString();       
    System.out.println(name.substring(name.lastIndexOf('\\') + 1));

    for (String fileName: files){
        File fileOrDir = new File(rootDir, fileName); 
        if (fileOrDir.isDirectory()){   

            level += 1;
            for(int i = 0; i < level; ++i)
                System.out.print('*');          

            listFiles(fileOrDir, fileOrDir.list());
            level -= 1;         
        } else {            
            for(int i = 0; i <= level; ++i)
                System.out.print('*');
            System.out.println(fileOrDir); 
        }           
    }   

}

他の方法を使用してレベルを追跡し、('*') を必要なスペースまたは '\t' に置き換えることができます。

    File root = new File("C:\\Root");
    String[] files = root.list();
    listFiles(root, files);

あなたの例の出力:

ルート
*admin
**C:\Root\admin\subAdmin1.txt
**subAdmin2
***subAdmin2-1
****C:\Root\admin\subAdmin2\subAdmin2-1\subAdmin2-1-1.txt
** **C:\Root\admin\subAdmin2\subAdmin2-1\subAdmin2-1-2.txt
*ゲスト
**C:\Root\guest\subguest1.txt
**サブゲスト2
*ユーザー
**C:\Root\user\ superuser1.txt
**superUser2

于 2014-08-11T19:45:13.150 に答える