如何遍历目录到一个TreeView?

时间:2022-06-28 12:41:07
造成资源管理器的效果,当然图标不是必须的,能正确的显示树的结构就行了,树的结构能正确显示各级文件夹之间的关系,以及文件夹下的文件。小弟今天见了别人的一个demo,能达到效果,就是死看不懂。劳烦大侠把自己的代码拿出来晒晒!

private void button1_Click(object sender, EventArgs e)
        {
            treeView1.Nodes.Add("视频其他");
            string path = @"E:\MyCSharpProgram";
            DG(path, treeView1.Nodes[0]);
        }
        void DG(string path, TreeNode TN)
        {
            string[] drr = Directory.GetDirectories(path);
            foreach (string s in drr)
            {
                TreeNode tn = TN.Nodes.Add(Path.GetFileName(s));
                                                                                                   
                DG(s, tn);
            }
            string[] frr = Directory.GetFiles(path);
            foreach (string ss in frr)
            {
                TN.Nodes.Add(Path.GetFileName(ss));
                                                                                               
            }
        }

他的代码非常简单,就是没看懂。两个foreach循环都用的 GetFileName()函数,不知道什么意思?

7 个解决方案

#1


第一个是主要完成递归的获得所有文件夹
第二个是文件夹遍历结束后对每个文件夹节点增加文件

可以先理解一下递归,很好懂

#2


void DG(string path, TreeNode TN)
        {
            string[] drr = Directory.GetDirectories(path);
            foreach (string s in drr)
            {
                TreeNode tn = TN.Nodes.Add(Path.GetFileName(s));
                                                                                                   
                DG(s, tn);
            }
            string[] frr = Directory.GetFiles(path);
            foreach (string ss in frr)
            {
                TN.Nodes.Add(Path.GetFileName(ss));
                                                                                               
            }
        }
这个程序是加载文件夹下面的文件或文件夹。Path.GetFileName是取名称。

#3


ps:
至于GetFileName只是获得对应的文件夹或者文件的名称,不是关键点

#4


引用 3 楼 chicky 的回复:
ps:
至于GetFileName只是获得对应的文件夹或者文件的名称,不是关键点

明白了点楼上们的意思,就是感觉GetFileName()函数怪怪的,看名字只是获取文件的名字。
而MSDN上的解释也是 :返回指定路径字符串的文件名和扩展名。

#5


嘿嘿,当场解决问题当场结贴!

#6


Path.GetFileName()是获取文件名如:
@"E:\MyCSharpProgram"就获得"MyCSharpProgram"
这段代码是用了个迭代的方法将所有文件夹下所有文件放入树中
通过反复调用DG()函数遍历

这个挺简单了,LZ看懂其他的以这个为主再加就好!

#7


谢谢,有情后补,前面结了贴。

#1


第一个是主要完成递归的获得所有文件夹
第二个是文件夹遍历结束后对每个文件夹节点增加文件

可以先理解一下递归,很好懂

#2


void DG(string path, TreeNode TN)
        {
            string[] drr = Directory.GetDirectories(path);
            foreach (string s in drr)
            {
                TreeNode tn = TN.Nodes.Add(Path.GetFileName(s));
                                                                                                   
                DG(s, tn);
            }
            string[] frr = Directory.GetFiles(path);
            foreach (string ss in frr)
            {
                TN.Nodes.Add(Path.GetFileName(ss));
                                                                                               
            }
        }
这个程序是加载文件夹下面的文件或文件夹。Path.GetFileName是取名称。

#3


ps:
至于GetFileName只是获得对应的文件夹或者文件的名称,不是关键点

#4


引用 3 楼 chicky 的回复:
ps:
至于GetFileName只是获得对应的文件夹或者文件的名称,不是关键点

明白了点楼上们的意思,就是感觉GetFileName()函数怪怪的,看名字只是获取文件的名字。
而MSDN上的解释也是 :返回指定路径字符串的文件名和扩展名。

#5


嘿嘿,当场解决问题当场结贴!

#6


Path.GetFileName()是获取文件名如:
@"E:\MyCSharpProgram"就获得"MyCSharpProgram"
这段代码是用了个迭代的方法将所有文件夹下所有文件放入树中
通过反复调用DG()函数遍历

这个挺简单了,LZ看懂其他的以这个为主再加就好!

#7


谢谢,有情后补,前面结了贴。