系统目录到Java列表

时间:2019-03-11 18:12:04

标签: java json angular

我对json不太熟悉,我试图将计算机目录传递给json,以使用PrimeNG(Angular)在网络上绘制它,我试图生成类似https://www.primefaces.org/primeng/assets/showcase/data/filesystem.json的结构,但是我不明白有什么想法吗?谢谢

我只需要帮助将完整的文件夹/文件结构保存在对象/列表中 最好的问候

*“ carpeta”类具有一个String(name)和两个列表,一个用于文件夹,另一个用于文件

这是我的实际代码:

 static carpeta raiz = new carpeta(new File(ruta).getName());

public static void recursiveSearch(File file ) {
     File[] filesList = file.listFiles();

     for (File f : filesList) {
            if (f.isDirectory()) {
            //  raiz.addCarpetas(Carpeta);
                carpeta actual = new carpeta(f.getName());
                raiz.addCarpetas(actual);

                System.out.println("Directoy name is  -------------->" + f.getName());
                System.out.println("BuscaDentro");
                recursiveSearch(f);
            }
            if( f.isFile() ){
                System.out.println("File name is  -------------->" + f.getName());
            }
            System.out.println("Siguiente");
        }

1 个答案:

答案 0 :(得分:1)

您可以使用以下递归方法:

ps

使用public MyFileDetails recursiveSearch(File file) { if (file.isFile()) { return new MyFileDetails(file.getName()); } List<MyFileDetails> children = new ArrayList<>(); File[] filesList = file.listFiles(); for (File f : filesList) { children.add(recursiveSearch(f)); } return new MyFolderDetails(file.getName(), children); }

MyFileDetails

还有public class MyFileDetails { private String name; public MyFileDetails(String name) { this.name = name; } public String getName() { return name; } }

MyFolderDetails

如果传递文件夹,它将返回一个包含所有子对象的Object。

public class MyFolderDetails extends MyFileDetails {
    private List<MyFileDetails> children;

    public MyFolderDetails(String name, List<MyFileDetails> children) {
        super(name);
        this.children = children;
    }

    public List<MyFileDetails> getChildren() {
        return children;
    }
}

当然,您可以将更多字段(例如文件大小或文件夹的显式标记)添加到detail对象,以获取显示的输出。