直接上代码:
public static List<FileTreeNode> getFileTree(File file) {
List<FileTreeNode> baseTreeNodes = new ArrayList<>();
File[] childFiles = file.listFiles();
if (childFiles != null) {
for (File listFile : childFiles) {
FileTreeNode baseTreeNode = new FileTreeNode();
baseTreeNode.setName(listFile.getName());
baseTreeNode.setIfDir(listFile.isDirectory());
baseTreeNode.setPath(listFile.getAbsolutePath());
baseTreeNode.setLength(listFile.length());
baseTreeNode.getChildren().addAll(getFileTree(listFile));
baseTreeNodes.add(baseTreeNode);
}
}
return baseTreeNodes;
}
树节点定义
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.ArrayList;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = false)
public class FileTreeNode {
private String name;
private String path;
private Long length;
private Boolean ifDir = false;//是否文件夹
private List<FileTreeNode> children = new ArrayList<>();
public void addChild(FileTreeNode treeNode) {
if (children == null) {
children = new ArrayList<>();
}
children.add(treeNode);
}
}
效果
[
{
"children": [
{
"children": [],
"ifDir": false,
"length": 6462,
"name": "index.vue"
}
],
"ifDir": true,
"length": 0,
"name": "dept"
},
{
"children": [
{
"children": [],
"ifDir": false,
"length": 4199,
"name": "dictDetail.vue"
},
{
"children": [],
"ifDir": false,
"length": 5090,
"name": "index.vue"
}
],
"ifDir": true,
"length": 0,
"name": "dict"
}
]