直接上代码:
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"}
]
需要完整源码