C#递归遍历子目录与子目录中的文件

xiaoxiao2021-02-28  116

[转载]作者:weixingstudio

 

     采用C#,通过指定一个路径,来递归的遍历所有的子目录以及子目录中的文件,建一个类似资源管理器的目录树

     先递归的遍历所有的子目录,如果没有子目录以后,则遍历所有的当前目录下的文件

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;

namespace Directory{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }

        private void textBox1_TextChanged(object sender, EventArgs e)        {

        }

        private void button1_Click(object sender, EventArgs e)        {            this.treeView1.Nodes.Clear();            if (folderBrowserDialog1.ShowDialog()==DialogResult.OK)            {                //                string beginPath = folderBrowserDialog1.SelectedPath;                this.textBox1.Text = beginPath;

                // 构造目录树                DirectoryInfo DI=new DirectoryInfo(beginPath);                TreeNode a = new TreeNode("文件");                treeView1.Nodes.Add(a);                Traverse(a, DI);            }        }

        public void Traverse(TreeNode node, DirectoryInfo dir)        {            if (dir == null)            {                // 如果目录为空,则说明没有子目录,应该返回到上一层                return;            }            else            {                TreeNode treeNode = new TreeNode(dir.Name);                node.Nodes.Add(treeNode); // 添加结点                // 子目录不空,则优先遍历所有的子目录,再遍历每个子目录中的文件                DirectoryInfo[] subDir = dir.GetDirectories();                foreach (DirectoryInfo sub in subDir)                {                    Traverse(treeNode, sub); // 先遍历当前目录的子目录                }

                // 遍历当前目录的文件                FileInfo[] files = dir.GetFiles();                foreach (FileInfo f in files)                {                    string fileName = f.Name;                    TreeNode fileNode = new TreeNode(fileName);                    treeNode.Nodes.Add(fileNode);                }            }        }    }}

转载请注明原文地址: https://www.6miu.com/read-26764.html

最新回复(0)