将树形结构生成文本,并输出
2013-04-08 16:46
253 查看
今天下午,吃饱了没事干,突然想写点什么,于是不由自主地想起了某件往事,当年在做XXX的时候好像有一个功能没有做出来。据说算法很复杂,当时就没有研究。
不过,今天想到用递归的方法,把这个功能大致做出来了,虽然称不上完美,至少还是比较简单的,而且代码也不多,才几行。
先给大家看看运行结果,如下图:
其实我说的这么神秘,也没什么,就是这个,把树形的目录结构输出到一个TXT文件中。
其实当初的项目要求比这个更复杂,所以我当时没想到解决方法,不过,像上图这样,虽说远没有达标,不过,至少也不算很难看。
原理就是通过递归的方式输出目录的名字,而目录前面的空格数量,是随着目录层次的加深同步累加,才做成这种缩进的效果。
下面我贴一下代码。
源代码,我待会再上传。
不过,今天想到用递归的方法,把这个功能大致做出来了,虽然称不上完美,至少还是比较简单的,而且代码也不多,才几行。
先给大家看看运行结果,如下图:
其实我说的这么神秘,也没什么,就是这个,把树形的目录结构输出到一个TXT文件中。
其实当初的项目要求比这个更复杂,所以我当时没想到解决方法,不过,像上图这样,虽说远没有达标,不过,至少也不算很难看。
原理就是通过递归的方式输出目录的名字,而目录前面的空格数量,是随着目录层次的加深同步累加,才做成这种缩进的效果。
下面我贴一下代码。
/// <summary> /// 递归,枚举并输出所有子目录 /// </summary> /// <param name="path">父目录全路径</param> /// <param name="spacestr">空格字符串</param> /// <param name="sw">StreamWriter对象</param> void EnumDirectory(string path, string spacestr, StreamWriter sw) { DirectoryInfo dirInfo = new DirectoryInfo(path); var dirsubs = dirInfo.GetDirectories(); foreach (var d in dirsubs) { sw.WriteLine(spacestr + "=> " + d.Name); EnumDirectory(d.FullName, spacestr + " ", sw); } }
private void btnStart_Click(object sender, EventArgs e) { if (Directory.Exists(lblDisplayDir.Text)== false) { return; } // 把目录结构输出到文本文件 using (StreamWriter sw = File.CreateText("a.txt")) { DirectoryInfo di = new DirectoryInfo(lblDisplayDir.Text); sw.WriteLine(di.Name); foreach (var d in di.GetDirectories()) { EnumDirectory(d.FullName, " ", sw); } sw.Close(); } // 从文本文件中读出内容 if (File.Exists("a.txt")) { using (var sr = File.OpenText("a.txt")) { this.txtResult.Text = sr.ReadToEnd(); sr.Close(); } } }
源代码,我待会再上传。
相关文章推荐
- java遍历给定目录,树形结构输出所有文件,包括子目录中的文件
- Delphi中根据分类数据生成树形结构的最优方法
- acts_as_tree 加xtree在ROR下生成动态树形结构
- js动态生成树形结构
- TreeView生成树形结构
- 关系数据库当中存放树形结构(同层有序),一次性生成对应树形菜单
- Delphi中根据分类数据生成树形结构的最优方法
- 利用TreeView控件动态生成无限极树形结构(转为了明天)
- 【原】根据网站动态目录生成树结构,并用TreeView输出【提供源码下载,有详细注释】
- EasyUI_tree根据数据库数据非迭代生成树形结构
- 生成树形结构的json字符串代码(c#)供前端angular tree使用.
- 以树形结构的形式输出指定目录下面的所有文件
- EasyUI使用tree生成树形结构加载两次的问题
- 在Winform的DataGridView的单元格中同时显示文本和图标,以及树形结构的示例
- java 生成 树形结构数据(tree)
- Delphi中根据分类数据生成树形结构的最优方法
- 树形结构数据后台处理:一次循环生成树
- 基于ssm与maven,使用easyui--tree生成类似部门管理树形结构图
- 如何生成多叉树,以构建树形结构需要的数据
- java遍历给定目录,树形结构输出所有文件,包括子目录中的文件