离离原上草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条)

报告相同问题?

悬赏问题

  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答