以下是代码,如果太长不想看,可以看图 😢
public static Map traverseDirectory(String DirPath, int level, String rootDir, Map map) { // 根据目录构造file对象 File dirFile = new File(DirPath); // 列出该目录下的文件和目录 String[] fileArr = dirFile.list(); // 目录非空 if (fileArr != null && fileArr.length > 0) { List<UnFileTab> fileList = (List<UnFileTab>) map.get(level); if (fileList == null) { fileList = new ArrayList<UnFileTab>(); } // 遍历保存该目录下的文件和目录至Map中,以level为key,所有文件(目录)封装为UNFileTab对象存入list作为value for (String filePath : fileArr) { // Map ChildFileMap = new HashMap();// 每层一个 File file = new File(DirPath + File.separator + filePath); UnFileTab unfile = null; unfile = assembleFile(file, level, rootDir); fileList.add(unfile); // ChildFileMap.put(rootDir, fileList);// 储存方式 父节点文件名为Key 值为父节点下的list map.put(rootDir, fileList); if (file.isDirectory()) { int nowLevel = level + 1; traverseDirectory(DirPath + File.separator + filePath, level + 1, filePath, map); map.put("MAXLEVEL", nowLevel); } } } return map;
}
public static StringBuilder parseDirectory(List<UnFileTab> list, Map<String, List<UnFileTab>> map, StringBuilder sb, String rootDir, String level) { if (list != null && list.size() > 0) { for (int i = 0; i < list.size(); i++) { UnFileTab unf = list.get(i); if ((i & 1) != 0) {// 奇数 sb.append("<tr class=\"even branch ui-droppable\" data-tt-id=\"" + assembleVersion(level, i) + "\" data-tt-parent-id=\"" + level + "\">");// 第一次 根目录 } else { sb.append("<tr class=\"odd branch ui-droppable\" data-tt-id=\"" + assembleVersion(level, i) + "\" data-tt-parent-id=\"" + level + "\">"); } sb.append("<td align=\"center\"> <span " + getTypeClass(unf.getType()) + " >" + unf.getFilename() + "</span></td>"); sb.append("<td align=\"center\" class=\"indenter\">" + unf.getParent() + "</td>"); sb.append("<td align=\"center\" class=\"indenter\">" + getType(unf.getType()) + "</td>"); sb.append("<td align=\"center\" class=\"indenter\"> 修改 删除 新增</td>"); sb.append("<td style=\"display:none\">" + unf.getPath() + "</td>"); sb.append("</tr> \n"); List<UnFileTab> childList = map.get(unf.getFilename()); if (childList != null && childList.size() > 0) { parseDirectory(childList, map, sb, unf.getFilename(), assembleVersion(level, i)); } } } return sb;
}
感觉用 QQ 截图发出来也是不错的啊
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于