java读取本地文件夹在前端生成树形结构

java读取本地文件夹在前端生成树形结构

近期根据需求实现了java+ztree根据本地文件夹生成树形结构在web前端中展示。有不足之处希望大家批评指正


//java bean
public class Tree {
    private int id;
    private int pId;
    private String name;

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

    @Override
    public String toString() {
        return "Tree{" +
                "id=" + id +
                ", pid=" + pId +
                ", name='" + name + '\'' +
                '}';
    }
}

package com.example.springboot_postgresql.controller;

import com.example.springboot_postgresql.bean.Tree;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.io.File;
import java.io.IOException;
import java.util.*;
//项目后端采用springboot框架
@Controller
public class getTree2Controller {
    List <Tree>node=new LinkedList();
    @ResponseBody
    @RequestMapping("/file")
    public List<Tree> file()
    {
        node.removeAll(node);
        String path="/xxxxxxxx";
        int level=0;
        List<Tree>file=getFile(path,1,level);
        return file;
    }
    private  List<Tree> getFile(String path,int id,int pid) {
        File file = new File(path);
        if(file.exists()) {
            File[] array = file.listFiles();
            List fileList = Arrays.asList(array);
            //对读到的本地文件夹进行排序
            Collections.sort(fileList, new Comparator<File>() {
                @Override
                public int compare(File o1, File o2) {
                    if (o1.isDirectory() && o2.isFile())
                        return -1;
                    if (o1.isFile() && o2.isDirectory())
                        return 1;
                    return o1.getName().compareTo(o2.getName());
                }
            });

            for (int i = 0; i < array.length; i++) {
                Tree tree = new Tree();
                tree.setpId(pid);
                tree.setId(id);
                tree.setName(array[i].getName());
                //判断是否为文件夹,是的话进行递归
                if (array[i].isDirectory()) {
                    node.add(tree);
                    //进行递归,此时的pid为上一级的id
                    getFile(array[i].getPath(), id * 10 + 1 + i, id);
                    id++;
                } else {
                    node.add(tree);
                    id++;
                }
            }
        }
        else
        {
            System.out.println("文件不存在");
        }
        return node;
    }
}

//ztree的js代码
var zNode3;
//通过ajax获取后端数据
$.ajax({
    type: "post",
    url: "/file",
    data: {},
    datatype: "json",
    async: false,
    success: function (data) {
        zNode3=data;
    }
});

function ztree3() {

    var setting3 = {
        data: {
            key: {title: "code"},
            simpleData:
                {
                    enable:true
                }
        },
        check: {
            enable: false
        },
        callback: {
            onClick: zTreeOnClick3
        }
    };
    
    function zTreeOnClick3() {
    }
    $(document).ready(function () {
        $.fn.zTree.init($("#tree3"), setting3, zNode3);
    });
}

剩下的就是在html中创建相应的div设置id为tree3即可。


版权声明:本文为weixin_44510984原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。