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