【问题标题】:System directory to java list系统目录到java列表
【发布时间】:2019-03-11 18:12:04
【问题描述】:

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

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

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

这是我的实际代码:

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

【问题讨论】:

    标签: java json angular


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 2011-11-24
      • 2021-03-26
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      相关资源
      最近更新 更多