目的
我想要将某一个文件夹里面的文件及子目录里面的文件以json的格式进行输出
大概输出的格式如下:
{
"xxxdir": [
{
"xxdir": [
"xxx.log",
{
"xxxdir": [
"xxx.log",
"xxx.log",
"xxx.log",
"xxx.log"
]
}
]
},
{
"xxxdir": [
{
"xxxdir": [
"xxx.html"
]
},
{
"xxxdir": [
"xxx.html"
]
},
"xxx.txt"
]
},
{
"xxxdir": [
{
"xxxdir": [
"xxxx.html",
"xxx.html"
]
},
"新建 文本文档1.txt"
]
}
]
}
方法
// 将目录转为json字符串的目录树
public static String traverseDir(String path){
HashMap<String, Object> map = new HashMap<>();
File file = new File(path);
if (file.isDirectory()){
File[] files = file.listFiles();
List<Object> list = new ArrayList<>();
if (Objects.nonNull(files)){
for (File value : files) {
if (!value.isDirectory()) {
list.add(value.getName());
} else {
list.add(traverseDir(value.getAbsolutePath()));
}
}
map.put(file.getName(), list);
}
}
Gson gson = new Gson()
return gson.toJson(map);
}
@Test
public void test0001(){
String dir = "D:\\testDir";
String jsonStr= traverseDir(dir);
System.out.println(jsonStr);
}