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
Atitit。Tree文件解析器的原理流程与设计实现 java c# php js的更多相关文章
- Dicom格式文件解析器[转]
Dicom格式文件解析器 Dicom全称是医学数字图像与通讯,这里讲的暂不涉及通讯那方面的问题 只讲*.dcm 也就是diocm格式文件的读取,读取本身是没啥难度的 无非就是字节码数据流处理.只不 ...
- Atitit.论图片类型 垃圾文件的识别与清理 流程与设计原则 与api概要设计 v2 pbj
Atitit.论图片类型 垃圾文件的识别与清理 流程与设计原则 与api概要设计 v2 pbj 1. 俩个问题::识别垃圾文件与清理策略1 2. 如何识别垃圾图片1 2.1. 体积过小文件<1 ...
- javap -- Java 类文件解析器
参考文档 http://blog.chinaunix.net/uid-692788-id-2681132.html http://docs.oracle.com/javase/7/docs/techn ...
- C++PE文件格式解析类(轻松制作自己的PE文件解析器)
PE是Portable Executable File Format(可移植的运行体)简写,它是眼下Windows平台上的主流可运行文件格式. PE文件里包括的内容非常多,详细我就不在这解释了,有兴趣 ...
- 浏览器中“JavaScript解析器”工作原理
浏览器在读取HTML文件的时候,只有当遇到<script>标签的时候,才会唤醒所谓的“JavaScript解析器”开始工作. JavaScript解析器工作步骤: 1.“找一些东西”: v ...
- springMVC:为MultipartFilte配置了上传文件解析器,报错或不能使用
一.问题描述为支持restful风格请求,并且应对可能上传文件的情况,需要在配置hiddenHttpMethodFilter过滤器之前配置MultipartFilter.目的是让MultipartFi ...
- XML的四种解析器(dom_sax_jdom_dom4j)原理及性能比较[收藏]
1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定 ...
- 《自己动手写框架2》:用200行的DBF解析器来展示良好架构设计
因为工作关系.须要工作其中,须要读取DBF文件.找了一些DBF读取开源软件,要么是太过庞大,动不动就上万行.要么是功能有问题,编码,长度,总之是没有找到一个很爽的. 在万般无奈之下,我老人家怒从心头起 ...
- Dicom格式文件解析器
转自:http://www.cnblogs.com/assassinx/archive/2013/01/09/dicomViewer.html Dicom全称是医学数字图像与通讯,这里讲的暂不涉及通讯 ...
随机推荐
- C++线段树模板(区间和、区间加)
操作说明: segtree<T>tree(len) =>创建一个内部元素类型为T.区间为1-len的线段树tree tree.build(l,r) =>以[l,r]区间建立线段 ...
- mysql 获取当前日期及格式化(转)
MySQL 获取当前日期及日期格式 获取系统日期: NOW() 格式化日期: DATE_FORMAT(date, format) 注: date:时间字段,format:日期格式 select now ...
- [Contest20180316]Game
这题有一个结论:如果他是最强的(⑨),那么线段树最优,如果他是最弱的,那么链状树最优 严格证明可能挺困难,感性理解就是公平赛制让强的人容易赢,极度不公平的赛制能让弱的人有机会反杀 所以我们只改他的能力 ...
- 【数位dp】hdu2089 不要62
http://www.cnblogs.com/xiaohongmao/p/3473599.html #include<cstdio> using namespace std; int n, ...
- 【二维莫队】【二维分块】bzoj2639 矩形计算
<法一>二维莫队,对n和m分别分块后,对块从上到下从左到右依次编号,询问以左上角所在块编号为第一关键字,以右下角标号为第二关键字排序,转移时非常厉害. O(q*n*sqrt(n)). #i ...
- 【最短路】【最大流】bzoj3931 [CQOI2015]网络吞吐量
跑出最短路图,然后把结点拆点跑最大流. #include<cstdio> #include<queue> #include<cstring> #include< ...
- HOW TO CHECK FOR ACTIVE TRACE FLAGS ON MICROSOFT SQL SERVER
http://crashmag.net/how-to-check-for-active-trace-flags-on-microsoft-sql-server You check for active ...
- 扩展gridview轻松实现冻结行和列
在实际的项目中,由于项目的需要,数据量比较大,同时显示栏位也比较多,要做gridview里显示完整,并做到用户体验比较好,这就需要冻结表头和关键列.由于用到的地方比较多,我们可以护展一个gridvie ...
- ASP.NET MVC生命周期介绍(转)
本文以IIS7中asp.net应用程序生命周期为例,介绍了asp.net mvc的生命周期. asp.net应用程序管道处理用户请求时特别强调"时机",对asp.net生命周期的了 ...
- JavaScript面向对象总结
对象(Object)应该算是js中最为重要的部分,也是js中非常难懂晦涩的一部分.更是面试以及框架设计中各出没.本文章,主要参考JavaScript红宝书(JavaScript高级程序设计 第六章)以 ...