java遞歸獲取文件樹目錄列表

直接上代碼:

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"
  }
]

 

需要完整源碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章