java - 系统目录到java列表

标签 java json angular

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

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

*“carpeta”类有一个字符串(名称)和两个列表,一个用于文件夹,另一个用于文件

这是我的实际代码:

 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");
        }

最佳答案

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

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:

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;
    }
}

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

MyFileDetails details = recursiveSearch(new File("/path/to/my-test-folder/"));

当然,您可以向详细信息对象添加更多字段(例如文件大小或文件夹的显式标记),以获得您显示的输出。

关于java - 系统目录到java列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55107956/

相关文章:

angular - (click) 只在 Chrome 中工作,在其他人中不工作

angular - 在 Angular : do we always need Observables? 中的组件之间共享数据

java - 无法运行第一个 Web 应用程序 Tomcat + Intellij

json - 如何使用 JQ 将 JSON 数组值展平为 CSV

java - 使用 Jsoup 构建基本程序

javascript - 如何使用 CoffeeScript 加载和使用静态 JSON 文件?

Java:使 Json 输出显式显示 "null",而不是隐藏 null 字段

css - 如何在没有 CLI 的情况下在 Angular 组件中使用更少

java - 多个 ExecutorService 在 main 之后完成

java - 线程 "main"中出现异常,Picture.java 和 PictureTester.java 中的mirrorHorizo​​ntal 类?