精华内容
下载资源
问答
  • 文件目录树形结构
    千次阅读
    2022-01-20 15:31:19

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

    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 {
        @Id
        private 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>() {
                    @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++) {
                    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为上一级的id
                        getFile(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遍历输出指定目录树形结构下的所有文件包括子目录中的文件,需要的朋友可以参考下
  • asp.net获取指定文件夹下所有子目录文件,现在有asp.net的站的就是用这样的原理显示文件
  • } } 问题描述: 可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理。 我们一起来...

    使用场景

    🌙实体类:Menu.java

        public class Menu {
        /**
         * id
         */
         public Integer id;
         /**
         * 名称
         */
         public String name;
         /**
         * 父id ,根节点为0
         */
         public Integer parentId;
         /**
         * 子节点信息
         */
         public List<Menu> childList;
    
    
        public Menu(Integer id, String name, Integer parentId) {
            this.id = id;
            this.name = name;
            this.parentId = parentId;
        }
        
        public Menu(Integer id, String name, Integer parentId, List<Menu> childList) {
            this.id = id;
            this.name = name;
            this.parentId = parentId;
            this.childList = childList;
        }
    
    }
    

    问题描述:

    可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理。


    我们一起来看看,代码实现为了实现简单,就模拟查看数据库所有数据到List里面。

    解决方案:

     🌟方法一:递归组装树形结构
    
    @Test
    public void testtree(){
        //模拟从数据库查询出来
        List<Menu> menus = Arrays.asList(
                new Menu(1,"根节点",0),
                new Menu(2,"子节点1",1),
                new Menu(3,"子节点1.1",2),
                new Menu(4,"子节点1.2",2),
                new Menu(5,"根节点1.3",2),
                new Menu(6,"根节点2",1),
                new Menu(7,"根节点2.1",6),
                new Menu(8,"根节点2.2",6),
                new Menu(9,"根节点2.2.1",7),
                new Menu(10,"根节点2.2.2",7),
                new Menu(11,"根节点3",1),
                new Menu(12,"根节点3.1",11));
    
        //获取父节点
        List<Menu> collect = menus.stream().filter(m -> m.getParentId() == 0).map(
                (m) -> {
                    m.setChildList(getChildrens(m, menus));
                    return m;
                }
        ).collect(Collectors.toList());
        System.out.println("-------转json输出结果-------");
        System.out.println(JSON.toJSON(collect));
    }
    
    /**
     * 递归查询子节点
     * @param root  根节点
     * @param all   所有节点
     * @return 根节点信息
     */
    private List<Menu> getChildrens(Menu root, List<Menu> all) {
        List<Menu> children = all.stream().filter(m -> {
            return Objects.equals(m.getParentId(), root.getId());
        }).map(
                (m) -> {
                    m.setChildList(getChildrens(m, all));
                    return m;
                }
        ).collect(Collectors.toList());
        return children;
    }
    
     🌟方法二:非递归组装树形结构
    
    Map<Integer, List<Menu>> perListMap =menuList.stream().collect(Collectors.groupingBy(Menu::getParentid));
    
    menuList.stream().forEach(item -> item.setChildren(perListMap.get(item.getFid()))	);
    
    return ActionResult.Succeed(perListMap.get(0));
    

    方法二用到 Java8 新特性 运用stream流的技巧 ;🎉🎉代码简洁🎉 🎉

    结果:

    在这里插入图片描述

    展开全文
  • labview树形结构显示文件目录,选择文件夹之后自动生成目录列表
  • /* source: /a/b/c/d/e /a/b/e/f/g /a/b/h /a/i/j /a/i/k result: a / \ b i /|\ / \ c e h j k | | d f | | e g */ const treeDTO = [] baseData = [ 'a/b/c/d/e', 'a/b/e/f/g', ... 'a/i/k'
    /* source:
     /a/b/c/d/e
     /a/b/e/f/g
     /a/b/h
     /a/i/j
     /a/i/k
    
    result:
           a
         /   \
        b     i
       /|\   / \
      c e h j   k
      | |
      d f
      | |
      e g
    */
    
    const treeDTO = []
    const baseData = [
    	'a/b/c/d/e',
        'a/b/e/f/g',
        'a/b/h',
        'a/i/j',
        'a/i/k'
    ]
    baseData.forEach(item => {
      const nodeArray = item.split('/')
      let children = treeDTO
      // 循环构建子节点
      for (const i of nodeArray) {
        const node = {
          label: i
        }
        if (children.length === 0) {
          children.push(node)
        }
        let isExist = false
        for (const j in children) {
          if (children[j].label === node.label) {
            if (!children[j].children) {
              children[j].children = []
            }
            children = children[j].children
            isExist = true
            break
          }
        }
        if (!isExist) {
          children.push(node)
          if (!children[children.length - 1].children) {
            children[children.length - 1].children = []
          }
          children = children[children.length - 1].children
        }
      }
    })
    
    console.log(treeDTO)
    
    展开全文
  • 将Dir.class放在任意需要遍历的文件目录,直接命令窗口运行java Dir生成Dir.txt文件
  • 这两天整理数据文件的时候发现,一层层的点击文件夹查看很繁琐,于是想写一个工具来递归打印出文件目录树形结构,网上找了一些资料几乎都是使用的os.walk, 调试了以后发现返回的貌似的是一个“生成器”,只需要for...
  • 亲测可用 找到百度网盘文件 生成目录txt 复制到excel 编辑保存
  • 本文介绍了ReactJs实现树形结构的数据显示的组件的示例,分享给大家,具体如下: 1、该组件树形显示数据 2、组件中数据的请求方式为fetch方式 3、点击对应的数据前面的小三角,fetch请求改数据下对应的子数据,并...
  • VS2005安装目录文件列表树形结构,用于解决文件缺失的问题。
  • 树形结构文件结构

    2013-09-17 10:38:03
    树形结构文件结构 简单代码,如何打开文件时在界面以树形方式显示子目录文件
  • idea目录文件分层树形结构显示

    千次阅读 2021-03-18 14:09:45
    idea目录文件分层树形结构显示 使用Intellij IDEA创建项目发现包没有分层,使用不方便。 可以点击右上角的设置,把红框选项的√去掉即可。 之后就可以这样子显示了

    idea目录文件分层树形结构显示

     

    使用Intellij IDEA创建项目发现包没有分层,使用不方便。

    可以点击右上角的设置,把红框选项的√去掉即可。

    在这里插入图片描述

    之后就可以这样子显示了

    在这里插入图片描述

     

     

    展开全文
  • eclipse项目eclipse工程树形结构目录结构windows结构显示类似文件结构显示 eclipse项目工程平行结构变为树形结构 ,去掉多余的显示,看起来怪怪的 eclipse项目工程用文件结构查看,类似windows的文件树,目录 一...
  • 1.安装tree yum -y install tree 2.命令查看树形结构 tree 目录
  • 主要介绍了解决java idea新建子目录时命名不是树形结构的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • filetree 以树形结构显示文件目录结构,它非常适合给别人介绍文件目录的组成框架
  • Windows 树形结构显示文件夹目录结构 - tree 1. tree Microsoft Windows [版本 10.0.19041.450] (c) 2020 Microsoft Corporation. 保留所有权利。 C:\Users\cheng>D: D:\>cd darknet\darknet-master\ D:\...
  • 通过LabVIEW软件动态建立一个树形结构,管理文件夹文件,同时具有输出文件路径功能。
  • 一、生成树形结构目录如下形式:E:.│ .buildpath│├─attachment│ │ image-not-exist.gif│ │ readme│ ││ ├─2014│ │ ├─01│ │ │ ├─01│ │ │ ├─02│ │ │ ├─03方法:用MS-Dos下的tree命令...
  • 我知道这个线程已经使用了一年,但是我正在... 当找到您的目录时,它已经接近我想要的了,但是我对其进行了修改,使其能够处理任何深度的目录。 由于某种原因,我无法使文件最后正确打开,所以我只剩下了那一部分...
  • linux下怎么用tree命令以树形结构显示文件目录结构?.docx
  • 1.设计一个树形目录结构文件系统,其根目录为root,各分支可以是目录,也可以是文件,最后的叶子都是文件。为该文件系统设计2~3个文件操作命令,并加以实现。如显示树形目录的命令、移动读写指针命令、改变文件...
  • java 生成文件结构目录树

    热门讨论 2013-07-23 20:47:40
    使用纯java代码遍历文件夹,生成一个文件夹目录结构目录树。 及返回一个包含有 id(文件夹id) fid(当前文件夹父目录文件夹id) name (文件/文件夹路径)的集合对象。可根据这个结果传到前台,通过jquery.ztree 或是...
  • 生成GitHub项目目录树形结构

    千次阅读 2021-11-14 19:45:04
    之前在GitHub中看别人项目的README文档时,总是发现其中会有整个项目的目录结构图,当时还想着是什么工具或者命令快捷生成的,这几天由于整理大批量的文件夹,想看清文件夹下到底有什么文件或者目录,不想一个个的...
  • vscode文件夹目录修改为树形结构

    千次阅读 2021-07-21 16:54:26
    一开始的文件夹目录是这样子的,父子级平行排列 按如上操作完成之后,就变成树形结构
  • 方法一:使用dos系统的cmd命令 1、我们打开需要复制的文件夹 2、在地址栏上输入cmd 回车 ,打开我们的小黑窗口 3、在小黑窗口输入以下命令,tree/f>treeName.txt,...我们打开这个文件,就可以看到以树形结构生成了目录
  • Linux 中获取当前目录树形结构

    千次阅读 2021-01-30 09:00:33
    执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。 语法 tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...] 参数说明: a 显示所有文件目录。 A 使用ASNI...
  • README.md文件怎么生成...打开命令提示符(即cmd),输入tree,会快速跳出一系列的树形结构的内容(速度太快没截到) 跳出这些则说明安装成功treer 2.使用treer 进入所要生成目录的文件夹终端,输入 treer -e README.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,407
精华内容 25,362
关键字:

文件目录树形结构