using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;public partial class TreeViewDemo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            //获取当前服务器上所有的磁盘分区
            string[] driverList= Directory.GetLogicalDrives();
            DriveInfo driverInfo = null;
            for (int i = 0; i < 1; i++)//driverList.Length;
            {
                driverInfo = new DriveInfo(driverList[i]);
                if (driverInfo.DriveType == DriveType.Fixed)
                {
                    TreeNode node = new TreeNode(driverList[i]);
                    tvFileList.Nodes.Add(node);
                    AddNode(driverList[i],node);
                }
            }
        }
    }    private void AddNode(string path,TreeNode node)
    {
        DirectoryInfo info = new DirectoryInfo(path);
        DirectoryInfo[] dirList=info.GetDirectories();//获取文件夹下所有的子文件夹,不包含子文件夹下的文件夹
        //info.GetFiles();//获取文件夹下所有的文件,不包含子文件夹下的文件
        for (int i = 0; i < dirList.Length; i++)
        {
            string name=dirList[i].Name;
            if (name != "System Volume Information")
            {
                TreeNode subNode = new TreeNode(name);
                node.ChildNodes.Add(subNode);
                //继续递归调用本方法
                AddNode(dirList[i].FullName,subNode);
            }
        }
    }
}

解决方案 »

  1.   

    上面的是给别人演示的一个例子,虽然演示的时候是在Web下,但是完全可以改在WinForm下。
      

  2.   


                System.IO.Directory.GetDirectories("O:\"); 
                System.IO.Directory.GetFiles("O:\");  
      

  3.   


          public void FindAllFile(string path)
          {
             DirectoryInfo[] ChildDirectory;//子目录集
              FileInfo[] NewFileInfo;//当前所有文件
              DirectoryInfo FatherDirectory=new DirectoryInfo(path); //当前目录
              ChildDirectory=FatherDirectory.GetDirectories("*.*"); //得到子目录集
              NewFileInfo=FatherDirectory.GetFiles();//得到文件集,可以进行操作
              foreach(DirectoryInfo dirInfo in ChildDirectory)
             {
                  FindAllFile(dirInfo.FullName);
             }
          }
      

  4.   


    public ArrayList al=new ArrayList();public void GetAllDirList(string strBaseDir)
    {
        DirectoryInfo di=new DirectoryInfo(strBaseDir);
        DirectoryInfo[] diA=di.GetDirectories();
        for(int i=0;i<diA.Length;i++)
        {
         al.Add(diA[i].FullName);
        //diA[i].FullName是某个子目录的绝对地址,把它记录在ArrayList中
         GetAllDirList(diA[i].FullName);
        //注意:递归了。逻辑思维正常的人应该能反应过来
        }
    }
      

  5.   

    代码是根据2楼的改的,如果O盘下好多文件,运行起来好慢,死了几次        /// <summary>
            /// 获取盘符
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnGetDisk_Click(object sender, EventArgs e)
            {
                //获取当前服务器上所有的磁盘分区
                //string[] driverList = Directory.GetLogicalDrives();
                //DriveInfo driverInfo = null;
                //for (int i = 0; i < 1; i++)//driverList.Length;
                //{
                //    driverInfo = new DriveInfo(driverList[i]);
                //    if (driverInfo.DriveType == DriveType.Fixed)
                //    {
                //        TreeNode node = new TreeNode(driverList[i]);
                //        //tvFileList.Nodes.Add(node);
                //        treeView1.Nodes.Add(node);
                //        AddNode(driverList[i], node);
                //    }
                //}//path的值用folderBrowerdialog获取也行
                string path = @"f:\";            TreeNode node = new TreeNode(path);
                treeView1.Nodes.Add(node);
                AddNode(path, node);
                
            }
            private void AddNode(string path, TreeNode node)
            {
                DirectoryInfo info = new DirectoryInfo(path);
                DirectoryInfo[] dirList = info.GetDirectories();//获取文件夹下所有的子文件夹,不包含子文件夹下的文件夹
                //info.GetFiles();//获取文件夹下所有的文件,不包含子文件夹下的文件
                for (int i = 0; i < dirList.Length; i++)
                {
                    string name = dirList[i].Name;
                 
                        TreeNode subNode = new TreeNode(name);
                        node.Nodes.Add(subNode);
                
                        //node.ChildNodes.Add(subNode);
                        //继续递归调用本方法
                        AddNode(dirList[i].FullName, subNode);
                    
                }
            }