日期:2014-05-17 浏览次数:20975 次
采用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); } } } } }