为实现读取文件目录下的文件信息,生成树形结构,以方便前端做一些展示

1.结构实体类

package cn.cnic.instdb.model.system;import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;/**
* @Auther  wdd
* @Date  2021/9/9 18:58
* @Desc  文件结构信息
*/
@Data
@Document(collection = "resource_file_tree")
public class ResourceFileTree {@Idprivate String id;private int treeId;private int pid;private String resourcesId;private String fileName;private String filePath;private Long size;private Boolean isFile;private boolean expanded = false;
}

2.读取文件目录工具类

package cn.cnic.instdb.utils;import cn.cnic.instdb.model.system.ResourceFileTree;
import org.apache.commons.lang3.StringUtils;import java.io.File;
import java.util.*;/*** @author wdd* @version 1.0* @date 2021/11/29 14:57*/
public class FileTree {//用于储存找到的每一个文件List<ResourceFileTree> node=new LinkedList();/*** 读取文件目录返回树形结构* @param path 文件路径* @param id 每条记录的id* @param pid 父id* @param resourcesId 数据资源的id* @param fileFilter 过滤掉某个命名的文件* @return*/private  List<ResourceFileTree> getFile(String path, int id, int pid, String resourcesId,String fileFilter) {File file = new File(path);if(file.exists()) {File[] array = file.listFiles();List fileList = Arrays.asList(array);//对读到的本地文件夹进行排序Collections.sort(fileList, new Comparator<File>() {@Overridepublic 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++) {ResourceFileTree resourceFileTree = new ResourceFileTree();//过滤文件if(StringUtils.isNotBlank(fileFilter) && fileFilter.equals(array[i].getName())){continue;}resourceFileTree.setResourcesId(resourcesId);resourceFileTree.setPid(pid);resourceFileTree.setTreeId(id);resourceFileTree.setFilePath(array[i].getPath());resourceFileTree.setFileName(array[i].getName());resourceFileTree.setIsFile(array[i].isFile());resourceFileTree.setExpanded(false);//判断是否为文件夹,是的话进行递归if (array[i].isDirectory()) {node.add(resourceFileTree);//进行递归,此时的pid为上一级的idgetFile(array[i].getPath(), id * 10 + 1 + i, id,resourcesId,fileFilter);id++;} else {resourceFileTree.setSize(array[i].length());node.add(resourceFileTree);id++;}}}return node;}public List<ResourceFileTree> getFileTree(String resourcesId, String path,String fileFilter) {node.removeAll(node);FileTree counter = new FileTree();int level=0;List<ResourceFileTree> file = counter.getFile(path, 1, level,resourcesId,fileFilter);return file;}public static void main(String[] args) {FileTree counter = new FileTree();List<ResourceFileTree> fileResourceFileTree = counter.getFileTree("5asd5as6d8asdas4dqw873e4", "D:\\wdd_work\\学习资料","neo4j图库安装文档.doc");System.out.println(fileResourceFileTree.size());System.out.println(fileResourceFileTree);}}

就这么简单,亲测已经成功使用中,如果有问题欢迎留言讨论~

如果对你有所帮助,别忘了点赞让我知道。

java读取文件目录返回树形结构相关推荐

  1. Mybatis返回树形结构

    在返回json数据时常常需要返回树形的结构,自己去写递归来构建树的话又太麻烦了. 下面介绍一种使用mybatis来返回树形结构的好方法 表结构展示 表里面需要记录父级Id MyBatis一对多coll ...

  2. Java返回树形结构的数据 (children方式)

    以children这种方式的实体类来遍历子父级的树形结构. //问题分类下拉表 @Override public List<DA> selectDA(Long deptId,Long us ...

  3. Java后端递归构建树形结构

    记录:在Java后台利用递归思路进行构建树形结构数据,返回给前端,能以下拉菜单等形式进行展示. 简明:为了简化代码,引入Lombok的Jar包,可省略实体类set().get()方法. <dep ...

  4. java如何返回树形结构

    一.需求说明 在做项目的时候前台要显示一个树形目录,比如下面这样: 二.添加数据库表 1.创建数据库表 2.添加测试数据 三.后端代码实现 PS:该测试类中的create_time和update_ti ...

  5. java树结构遍历_树形结构,java_树遍历统计总数,树形结构,java - phpStudy

    树遍历统计总数 { platformId: 3, areaId: "", areaName: "ROOT", parentAreaId: "" ...

  6. Java实现返回的数据为树形结构

    1.实体类为: id:主键 name:名字 parent_id:父id grade:等级 根据list中的实体类数据返回树形结构,代码如下: public class TSystemTreeUtil ...

  7. java实现处理无限层级树形结构

    树形结构在实际业务中是很经常遇到的,比如说机构.菜单.部门等等业务就会经常遇到层级关系.一般层级处理,有两种方式 (1)将所有的数据返回给前端,由前端处理,组装成树形结构,别担心,前端有组件的,只要后 ...

  8. Java学习笔记<十六>(树形结构存储)

    1.树形结构的介绍 * 树形结构简介  * 树形结构是一种非线性结构,存储的是"一对多的"关系的数据元素的集合  *  * 树形结构的相关术语:  * 节点(Node):使用树结构 ...

  9. 使用树形结构保存实体

    阅读原文请访问我的博客BrightLoong's Blog 之前在项目需要实现一个功能--将xml文件映射成实体,然后对映射的实体进行逻辑处理,最后保存到数据库中:由于xml结构的数据是结构化的数据, ...

最新文章

  1. 我的电脑不联网,很安全,黑客:你还有风扇呢
  2. 免费!!3天,吃透JVM!(限时领)
  3. java编写脚本校验修改密码_java编写一个更改密码校验程序,有两个密码框,一个用于输入新密码,另一个请输入确认密码……...
  4. JQuery+ajax+jsonp 跨域访问
  5. CaseStudy(showcase)界面篇-导出xaml以及放入Blend的技巧
  6. 缺少动态连接库.so--cannot open shared object file: No such file or directory
  7. django-模板的转义
  8. Linux内核分析 - 网络[十二]:UDP模块 - 收发
  9. docker -v 挂载文件_浅谈关于docker中数据卷的操作,附带案例
  10. UcOS-II 和linux比较
  11. 人脸对齐(十四)--LPFA
  12. bzoj3669(NOI2014)魔法森林
  13. Flex游戏篇——游戏开发概述
  14. 频谱泄露、栅栏效应、补零实验
  15. 怎样进入金蝶服务器修改参数,金蝶KIS专业版的系统参数在哪里设置
  16. Flash和JS实现的图片幻灯片切换特效
  17. 国际域名缩写____各个国家
  18. 【Python】初学者也可以实现的人脸识别系统-0x1
  19. 学了python不知干啥?爬爬虫! (1)保存网络图片
  20. 尼康相机测试软件mac版,尼康Webcam Utility

热门文章

  1. 目录扫描工具--dirsearch下载安装(Windows)
  2. 实现点击鼠标更换图片
  3. 抖音升级青少年模式!14岁以下用户每天使用时间不超40分钟
  4. rfid读写器的lbt算法为什么无法解决读写器网络中的隐藏终端的问题
  5. 艾司博讯:拼多多揽件信息超时处罚是什么
  6. Sandboxie沙盘双开器
  7. FLEX HSLIDER的使用
  8. 腾讯视频电脑版下载_怎么样下载腾讯视频
  9. mysql电量_BBU电池电量的监控
  10. centos yum安装php