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

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条)

报告相同问题?