您的位置:首页 > 编程语言 > C#

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

2016-05-09 22:04 417 查看
[转载]作者: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);
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: