歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C#遞歸遍歷子目錄與子目錄中的文件

采用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);
                }
            }
        }
    }
}

Copyright © Linux教程網 All Rights Reserved