C#TreeView控件遍历文件夹下所有子文件夹以及文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#TreeView控件遍历文件夹下所有子文件夹以及文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1451字,纯文字阅读大概需要3分钟。
内容图文
![C#TreeView控件遍历文件夹下所有子文件夹以及文件](/upload/InfoBanner/zyjiaocheng/1302/df2e145df60f473b97ffeea1c54e19fc.jpg)
一直对递归的理解不深刻,有时候觉得很简单,可是用起来总会出错。这里需要在TreeView控件里显示一个文件夹下的所有目录以及文件,毫无意外的需要用到递归。
一开始,想到用递归写一个生成每一个节点(TreeNode)的方法,最后将根结点添加到TreeView中即可。
1 private static TreeNode getRootNode(string dirname)//根据传入的文件夹地址,遍历所有的子目录和文件并生成节点 2 { 3 TreeNode node = new TreeNode(dirname); 4string[] dirs = Directory.GetDirectories(dirname); 5string[] files = Directory.GetFiles(dirname); 6 7foreach (string dir in dirs) 8 { 9 node.Nodes.Add(dir); 10 getRootNode(dir); 11 } 121314foreach (string file in files) 15 { 1617 TreeNode fnode = new TreeNode(file); 18 node.Nodes.Add(fnode); 1920 } 2122return node; 23 }
结果并不如我想的那样,它只是把根目录下的所有目录遍历并且生成了根结点的子节点而已。结果如下:
只有根结点和一级子节点,子目录下的文件和二级子目录都没了。关键在红色的代码部分,这里我递归了,但是却并没有将生成的子节点加到上一级节点。
关键还是对递归的理解太肤浅了。
下面是改正过得代码和结果:
public static Boolean createTree(TreeView tree,string dirname)
{
TreeNode root;
if ((root=getRootNode(dirname)) == null)
return false;
tree.Nodes.Add(root);
return true;
}
private static TreeNode getRootNode(string dirname)//递归,返回根结点
{
TreeNode node = new TreeNode(dirname);
string[] dirs = Directory.GetDirectories(dirname);
string[] files = Directory.GetFiles(dirname);
foreach (string dir in dirs)
{
node.Nodes.Add(getRootNode(dir));
}
foreach (string file in files)
{
if (Path.GetExtension(file) == ".c" || Path.GetExtension(file) == ".h")
{
TreeNode fnode = new TreeNode(file);
node.Nodes.Add(fnode);
}
}
return node;
}
结果:
在此记录一下,也算是小进步吧
原文:http://www.cnblogs.com/HIT-LYT/p/4287413.html
内容总结
以上是互联网集市为您收集整理的C#TreeView控件遍历文件夹下所有子文件夹以及文件全部内容,希望文章能够帮你解决C#TreeView控件遍历文件夹下所有子文件夹以及文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。