c#里有遍历目录及子目录以树的形式展现

时间:2021-02-22 12:18:13

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;