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版权协议,转载请附上原文出处链接和本声明。