怎么样才能把遍历硬盘中的目录然后生成书,并且是和目录一样,要产生嵌套的树结构,绑定到TREEVIEW中
能不能给出代码

解决方案 »

  1.   

    以下是一个示例代码,你可进行参考将系统上的所有目录填充到树视图中 /// <summary>
    /// 填充目录文件到树视图
    /// 1.获取系统上的所有逻辑驱动器
    /// 2.在每个逻辑驱动器上获取驱动器顶级目录列表,并遍历子目录
    ///注:本程序参考《C#程序设计》
    /// </summary>
    /// <param name="tvw"></param>
    /// <param name="isSource"></param>
    private void FillDirectoryTree(TreeView tvw,bool isSource)
    {
    tvw.Nodes.Clear();//获取系统上的所有逻辑驱动器
    string[] strDrives=Environment.GetLogicalDrives();foreach(string rootDirectoryName in strDrives)
    {
    //if(rootDirectoryName !=@"E:\")
    // continue;
    try
    {
    //获取驱动器顶级目录列表
    DirectoryInfo dir=new DirectoryInfo(rootDirectoryName);
    dir.GetDirectories();TreeNode ndRoot=new TreeNode(rootDirectoryName);
    tvw.Nodes.Add(ndRoot);
    if(isSource)
    {
    GetSubDirectoryNodes(ndRoot,ndRoot.Text,true);
    }
    else
    {
    GetSubDirectoryNodes(ndRoot,ndRoot.Text,false);
    }
    }
    catch(Exception e)
    {
    MessageBox.Show(e.Message);
    }
    }
    }//遍历子目录
    private void GetSubDirectoryNodes(TreeNode parentNode,string fullName,bool getFileNames)
    {
    DirectoryInfo dir = new DirectoryInfo(fullName);
    DirectoryInfo[] dirSubs=dir.GetDirectories();//为每一个子目录添加一个子接点
    foreach(DirectoryInfo dirSub in dirSubs)
    {
    //不显示隐藏文件夹
    if((dirSub.Attributes&FileAttributes.Hidden)!=0)
    {
    continue;
    }
    TreeNode subNode=new TreeNode(dirSub.Name);
    parentNode.Nodes.Add(subNode);//递归调用GetSubDirectoryNodes
    GetSubDirectoryNodes(subNode,dirSub.FullName,getFileNames);
    }
    //获取目录中的文件
    if(getFileNames)
    {
    FileInfo[] files=dir.GetFiles();
    foreach(FileInfo file in files)
    {
    TreeNode fileNode=new TreeNode(file.Name);
    parentNode.Nodes.Add(fileNode);
    }
    }