/// <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); } } }

|