写了递归取获取目录结构数据,但是文件夹河子文件夹平级了,想要树型结构的
/**
* 输出给定目录下的文件,包括子目录中的文件
*
* @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;
}
// 控制层
@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;
}
效果
你是指打印格式吗?加个count每一层递增,像打印菱形图形那种方法