JAVA 生成文件目录树-json串

该代码示例展示了一个Java程序,用于读取指定目录下的文件和子文件夹,通过递归方式构建一个Bean对象的JSON数据结构。每个Bean对象包含了文件或文件夹的ID、父ID、名称、标签以及子项列表。程序适用于组织文件系统的目录结构。
摘要由CSDN通过智能技术生成

效果如图:

代码如下:

 比较简陋但应该能用

package com.b.api;

import com.alibaba.fastjson.JSON;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * 读取文件目录生成json串
 */
public class GenerateJsonByFiles {

    public static final String directory = "C:\\Users\\48599\\Documents\\Downloads";

    public int sid;

    public static void main(String[] args) {
        GenerateJsonByFiles a = new GenerateJsonByFiles();
        a.sss();
    }

    public void sss() {
        GenerateJsonByFiles a = new GenerateJsonByFiles();
        List<Bean> list = new ArrayList<>();
//
        File file = new File(directory);
        String[] list1 = file.list();

        for(String name : list1) {
            Bean bean = new Bean();
            List<Bean> childrenList = new ArrayList<>();
            bean = a.aaa(directory+"\\"+name, name, 0, bean, childrenList);
            list.add(bean);
        }
        System.out.println(JSON.toJSONString(list));
    }

    public Bean aaa(String path, String name, int pid, Bean bean, List<Bean> childrenList) {
        sid++;
        int id = sid;
        bean.setId(id);
        bean.setPid(pid);
        bean.setName(name);
        bean.setLabel(name);
        File file = new File(path);
        if(file.isDirectory()) {
            String[] list1 = file.list();
            for(String dd : list1) {
                List<Bean> l = new ArrayList<>();
                Bean sss = new Bean();
                sss.setId(sid);
                sss.setName(name);
                sss.setLabel(name);
                aaa(path+"\\"+dd, dd, sid, sss, l);
                sss.setPid(id);
                childrenList.add(sss);
                bean.setChildren(childrenList);
            }
        }
        return bean;
    }

    class Bean {

        private int id;
        private int pid;
        private String name;
        private String label;
        private String path;
        private List<Bean> children;

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public int getPid() {
            return pid;
        }

        public void setPid(int pid) {
            this.pid = pid;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getLabel() {
            return label;
        }

        public void setLabel(String label) {
            this.label = label;
        }

        public String getPath() {
            return path;
        }

        public void setPath(String path) {
            this.path = path;
        }

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

        public void setChildren(List<Bean> children) {
            this.children = children;
        }
    }
}

再贴一下个人公众号

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值