ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

生成文件树形结构

2020-12-27 12:34:20  阅读:173  来源: 互联网

标签:__ 文件 list 生成 add 树形 new FileInfo getUUID


import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

public class FileTreeUtil {

    public static final String END_STRING = "|__";

    /**
     * 打印文件夹树状结构
     * 
     * @param dirPath
     * @param level
     * @throws IOException
     */
    public static void listDirTree(String dirPath, int level) throws IOException {
        File file = new File(dirPath);
        if (file.isFile()) {
            System.out.println(getBlankString(level) + END_STRING + file.getName());
            return;
        }
        File[] files = file.listFiles();
        for (File tmpFile : files) {
            if (tmpFile.isDirectory()) {
                System.out.println(getBlankString(level) + END_STRING + tmpFile.getName());
                listDirTree(tmpFile.getCanonicalPath(), level + 1);
            } else {
                System.out.println(getBlankString(level) + END_STRING + tmpFile.getName());
            }
        }
    }

    public static String getBlankString(int level) {
        String str = "--";
        for (int i = 0; i < level; i++) {
            str += "---";
        }
        return str;
    }

    static class FileInfo {
        public String id;
        //父id
        public String pid;
        public String name;
        public boolean isDir;

        public FileInfo(String id, String pid, String name, boolean isDir) {
            super();
            this.id = id;
            this.pid = pid;
            this.name = name;
            this.isDir = isDir;
        }

        public FileInfo() {
            super();
        }
    }

    /**
     * 打印list树状结构,FileInfo关联父子关系
     * @param list
     * @param root
     *            id为0的是root
     * @param level
     */
    public static void listDirTree(List<FileInfo> list, FileInfo root, int level, StringBuilder sb) {
        if (!root.isDir) {
            sb.append(getBlankString(level) + END_STRING + root.name + "<br/>\n");
            return;
        }
        for (FileInfo tmpFile : list) {
            if (tmpFile.pid.equals(root.id)) {
                if (tmpFile.isDir && !"0".equals(tmpFile.id)) {
                    sb.append(getBlankString(level) + END_STRING + tmpFile.name + "\n");
                    listDirTree(list, tmpFile, level + 1, sb);
                } else {
                    sb.append(getBlankString(level) + END_STRING + tmpFile.name + "\n");
                }

            }
        }
    }

    public static String getUUID() {
        return UUID.randomUUID().toString().replaceAll("-", "").substring(0, 8);
    }

    public static void main(String[] args) throws IOException {
        //listDirTree("E:\\code\\niiam-project\\cloud-3d-app\\app\\src\\main\\java", 0);
        List<FileInfo> list = new ArrayList<>();
        FileInfo root = new FileInfo("0", "-1", "Docs", true);
        list.add(root);
        list.add(new FileInfo("1", "0", "1", true));
        list.add(new FileInfo("2", "0", "2", true));
        list.add(new FileInfo("3", "0", "3", true));

        list.add(new FileInfo("11", "1", "11", true));
        list.add(new FileInfo("22", "2", "22", true));
        list.add(new FileInfo("33", "3", "33", true));
        list.add(new FileInfo("44", "1", "44", true));
        list.add(new FileInfo("55", "1", "55", true));
        list.add(new FileInfo("66", "1", "66", true));

        list.add(new FileInfo("111", "11", getUUID() + ".java", false));
        list.add(new FileInfo("222", "11", getUUID() + ".java", false));
        list.add(new FileInfo("333", "11", getUUID() + ".java", false));
        list.add(new FileInfo("444", "11", getUUID() + ".java", false));

        list.add(new FileInfo(getUUID(), "0", getUUID() + ".c", false));
        list.add(new FileInfo(getUUID(), "0", getUUID() + ".c", false));
        list.add(new FileInfo(getUUID(), "0", getUUID() + ".c", false));

        list.add(new FileInfo(getUUID(), "1", getUUID() + ".py", false));
        list.add(new FileInfo(getUUID(), "2", getUUID() + ".py", false));
        list.add(new FileInfo(getUUID(), "3", getUUID() + ".py", false));
        
        System.out.println("|__Docs");
        StringBuilder sb = new StringBuilder();
        listDirTree(list, root, 1, sb);
        System.out.println(sb.toString());
    }
}

效果:

|__Docs
-----|__1
--------|__11
-----------|__68391d65.java
-----------|__68334e67.java
-----------|__5cc92bb6.java
-----------|__756283d5.java
--------|__44
--------|__55
--------|__66
--------|__6f4f9617.py
-----|__2
--------|__22
--------|__536037ce.py
-----|__3
--------|__33
--------|__1ae6670d.py
-----|__0c3f7888.c
-----|__5f940aec.c
-----|__d329743b.c

 

标签:__,文件,list,生成,add,树形,new,FileInfo,getUUID
来源: https://www.cnblogs.com/zincredible/p/14196873.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有