zoukankan      html  css  js  c++  java
  • C#递归遍历子目录与子目录中的文件

    [转载]作者: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);
                    }
                }
            }
        }
    }

  • 相关阅读:
    关于《大道至简》第四章的收获
    关于《大道至简》第三章的收获
    关于《大道至简》第二章的收获
    关于《大道至简》第一章的收获
    【模板】AC自动机(加强版)
    求第 i 个素数 Meissel Lehmer Algorithm + 二分 【模板】
    Meissel Lehmer Algorithm 求前n个数中素数个数 【模板】
    黑匣子_NOI导刊2010提高(06) Splay Tree
    CF446B DZY Loves Modification 优先队列
    CF446A DZY Loves Sequences 简单dp
  • 原文地址:https://www.cnblogs.com/Raywang80s/p/5475639.html
Copyright © 2011-2022 走看看