离离原上草77 2021-04-07 18:12 采纳率: 33.3%
浏览 49
已采纳

Java获取文件夹下的目录结构,子文件夹和子文件I名称

写了递归取获取目录结构数据,但是文件夹河子文件夹平级了,想要树型结构的

/**
     * 输出给定目录下的文件,包括子目录中的文件
     *
     * @param dirPath 给定的目录
     */
    public Map<String, List<String>> readFiles(String dirPath, Map<String, Map> fileAndDirMap) {
        // 建立当前目录中文件的File对象
        File file = new File(dirPath);
        // 取得代表目录中所有文件的File对象数组
        File[] list = file.listFiles();
        List<String> fileNameList = new ArrayList<>();
        Map<String, List<String>> fileMap = new LinkedHashMap<>();
        fileMap.put(dirPath, fileNameList);
        for (File file1 : list) {
            if (file1.isDirectory()) {
                fileAndDirMap.put(dirPath, fileMap);
                readFiles(file1.getPath(), fileAndDirMap);
            } else {
                fileNameList.add(file1.getName());
            }
        }
        fileAndDirMap.put(dirPath, fileMap);
        // 遍历file数组
        return fileMap;
    }

 

  • 写回答

2条回答 默认 最新

  • 一剑荒芜 2021-04-08 11:24
    关注
        // 控制层
        @ResponseBody
        @RequestMapping(value = "dgFileList")
        public String dgFileList(){
            String path = "C:\\Users\\HASEE\\Desktop\\近期文件\\";
            File file = new File(path);
            // 建立当前目录中文件的File对象
            File fileL = new File(path);
            // 取得代表目录中所有文件的File对象数组
            File[] listL = file.listFiles();
            Map<String, Object> fileAndDirMap = new LinkedHashMap<>();
            Map<String, Object> stringListMap = FileUtil.readFiles(fileAndDirMap, listL);
            return JSON.toJSONString(stringListMap);
        }
    
        // 工具类
        public static Map<String, Object> readFiles(Map<String, Object> listSz, File[] list)        {
            for (File file1 : list) {
                if (file1.isDirectory()) {
                    Map<String, Object> listSzx = new LinkedHashMap<>();
                    listSz.put(file1.getName(), listSzx);
                    File fileL = new File(file1.getPath());
                    readFiles(listSzx, fileL.listFiles());
                } else {
                    listSz.put(file1.getName(), file1.getAbsolutePath());
                }
            }
            return listSz;
        }
    
    

    效果

     

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图