c#里有遍历目录及子目录以树的形式展现
protected void Button1_Click(object sender, EventArgs e)
{
TreeView1.Nodes.Clear(); //清空书的节点
DirectoryInfo dir = new DirectoryInfo(@"E:\"); //更改你要查找的文件夹
FindAllFile(TreeView1, null, dir); //构建树的方法
TreeView1.ExpandAll(); //展开树
string sitePath = Request.PhysicalApplicationPath;//站点物理路径
}
public void FindAllFile(TreeView tree,TreeNode Parent,DirectoryInfo dir)
{
TreeNode node = new TreeNode();
if (Parent == null)
tree.Nodes.Add(node);
else
Parent.ChildNodes.Add(node);
node.Text = dir.Name;
node.Value = dir.Name;
DirectoryInfo[] ChildDirectory;//子目录集集
ChildDirectory = dir.GetDirectories("*.*"); //得到子目录集
foreach (DirectoryInfo dirInfo in ChildDirectory)
{
FindAllFile(tree,node,dirInfo);
}
}
递归实现查找目录下的所有子目录和文件
public void FindFile(string dir) //参数为指定的目录
{
//在指定目录及子目录下查找文件,在listBox1中列出子目录及文件
DirectoryInfo Dir=new DirectoryInfo(dir);
try
{
foreach(DirectoryInfo d in Dir.GetDirectories()) //查找子目录
{
FindFile(Dir+d.ToString()+"\\");
listBox1.Items.Add(Dir+d.ToString()+"\\"); //listBox1中填加目录名
}
foreach(FileInfo f in Dir.GetFiles("*.*")) //查找文件
{
listBox1.Items.Add(Dir+f.ToString()); //listBox1中填加文件名
}
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
}
调用
private void button1_Click(object sender, System.EventArgs e)
{
string currentdir="F:\\myprogram\\C#\\FileSearch"; //搜索的目录
if(currentdir[currentdir.Length-1]!='\\') //非根目录
currentdir+="\\";
FindFile(currentdir); //调用查找文件函数
}
加上 using System.IO;