Atitit。Tree文件解析器的原理流程与设计实现 java c# php js
Atitit。Tree文件解析器的原理流程与设计实现 java c# php js
1.1. 判断目录 ,表示服 dirFlagChar = "└├─";1
1. 解析原理与流程
1.1. 判断目录 ,表示服 dirFlagChar = "└├─";
其中-类似于剑豪的制表符是表示目录的。。够好表示最后的目录,t制表符表示中间的目录。。
1.2. 剑豪制表符出现的位置与文件夹级别对应表
prefix | lev1 |
2 | 1 |
5 | 2 |
6 | 2 |
9 | 3 |
12 | 4 |
13 | 4 |
16 | 5 |
17 | 5 |
20 | 6 |
21 | 6 |
24 | 7 |
27 | 8 |
28 | 8 |
作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
1.3. 主要判读流程
if (level_curdir > level_lastdir)
lastDir = lastDir + "/" + curdirName;
else if(level_curdir==level_lastdir)
lastDir = getCurDirParent(level_curdir, lastDir) + "/"+curdirName;
else
lastDir = getCurDirParent(level_curdir, lastDir) + "/"
2. Tree结果
文件夹 PATH 列表
卷序列号为 802A-6864
C:.
│ .classpath
│ .mymetadata
│ .myumldata
│ .project
│ build.xml
│ myprocessdefinition1.xml
│ readme.txt
│ tree.txt
│
├─.settings
│ com.genuitec.eclipse.j2eedt.core.prefs
│
├─src
│ │ applicationContext-actions.xml
│ │ applicationContext-beans.xml
│ │ applicationContext-common.xml
│ │ hibernate.cfg.xml
│ │ init_datas.xml
│ │ jbpm.cfg.xml
│ │ log4j.properties
│ │ MessageResources.properties
│ │ test.java
3. Code----
public class TreeUtil {
private String encode;
private String path;
public TreeUtil(String p, String e) {
path = p;
encode = e;
}
public static String lastDir;
public static void main(String[] args) {
// TODO Auto-generated method stub
// 4>1,7>2,11>3,13>4
// dir 2>2, 5>3,9>4, 13>5 17>6 20>7
// countLengestFolderPath();
final String start = "c:\\myoa";
String dirFlagChar = "└├─";
final String dirFlagChar1 = "─";
AFile f = new AFile("c:\\myoa\\tree.txt", "gbk");
final Set st = Sets.newConcurrentHashSet();
lastDir = "";
final DbStroreEngieen dbs = new DbStroreEngieen(pathx.webAppPath()
+ "/db/db1");
final List<Map> table = dbs.getTableRecs("dirLevel");
f.trave(new Closure<String, Object>() {
@Override
public Object execute(String line) throws Exception {
if (line.contains(dirFlagChar1)) {
int preIndex = line.indexOf(dirFlagChar1) + 1;
String curdirName = get_curdirName(preIndex, line);
if( curdirName.equals("com"))
System.out.println("dbg");
Map row = dbs.getRow(table, "prefix", preIndex);
int level_curdir = new ANum( row.get("lev1")).toInt();
int level_lastdir = get_level_curdir(lastDir);
if (level_curdir > level_lastdir) //src/com/zhaohui/oa/freemarker/templates
lastDir = lastDir + "/" + curdirName;
else if(level_curdir==level_lastdir)
lastDir = getCurDirParent(level_curdir, lastDir) + "/"+curdirName;
else
lastDir = getCurDirParent(level_curdir, lastDir) + "/"
+ curdirName;
lastDir= AString.LTrim(lastDir,"/");
st.add(preIndex);
String idex = new ANum(preIndex).toStr();
//System.out.println(idex + ":" + line);
System.out.println(lastDir);
}
return null;
}
//1 ".sett"
private String getCurDirParent(int level_curdir, String lastDir) {
String[] a = lastDir.split("/");
List<String> li = Lists.newArrayList();
for (int i = 0; i < level_curdir-1; i++) {
li.add(a[i]);
}
return com.attilax.collection.CollectionUtils.join(li, "/");
}
private String get_curdirName(int preIndex, String line) {
// TODO Auto-generated method stub
return line.substring(preIndex);
}
private int get_level_curdir(String lastDir) {
if(lastDir.equals("")) return 0;
String[] a = lastDir.split("/");
return a.length ;
}
});
List li = Lists.newArrayList();
li.addAll(st);
Collections.sort(li);
// List li2=
// from(li).orderby().exe();
// ACollections.set2list(st);
System.out.println(AtiJson.toJson(li));
System.out.println("--f");
}
4. 结果
.settings
src
dbg
src/com
src/com/zhaohui
src/com/zhaohui/oa
src/com/zhaohui/oa/freemarker
src/com/zhaohui/oa/freemarker/templates
src/com/zhaohui/oa/manager
src/com/zhaohui/oa/manager/impl
src/com/zhaohui/oa/model
src/com/zhaohui/oa/util
src/com/zhaohui/oa/web
src/com/zhaohui/oa/web/actions
src/com/zhaohui/oa/web/forms
test
Dbg
----end
相关文章
- [Java Spring MVC] Introduction to interceptors
- C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义
- Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结
- Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js
- Atitit.java c#这类编程语言的设计失败点attilax总结
- Atitit.java c#这类编程语言的设计失败点attilax总结
- Atitit 通过调用gui接口杀掉360杀毒 360卫士 qq保镖等难以结束的进程(javac# php )
- Atitit.http httpclient实践java c# .net php attilax总结
- Atitit.http代理的实现 代码java php c# python
- Atitit.跨语言异常转换机制 java c# php到js的异常转换
- Atitit.跨语言 java c#.net php js常用的codec encode算法api 兼容性 应该内置到语言里面
- atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js
- Atitit.面向接口的web 原理与设计重写 路由启动绑定配置url router rewriting urlpage mvc mvp的 java c#.net php js
- Atitit.获取approot api 应用根路径 java c#.net php asp
- atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js
- Atitit。Tree文件解析器的原理流程与设计实现 java c# php js
- Atitit。Tree文件解析器的原理流程与设计实现 java c# php js
- Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持
- Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
- atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97
- Atitit. 悬浮窗口的实现 java swing c# .net c++ js html 的实现
- Atitit.实现继承的原理and方法java javascript .net c# php ...
- paip.判断文件是否存在uapi python php java c#
- 不重复的随机数JAVA、C#·适合初级人员玩耍。