将系统上的所有目录填充到树视图中

///

1<summary>   
2/// 填充目录文件到树视图   
3/// 1.获取系统上的所有逻辑驱动器   
4/// 2.在每个逻辑驱动器上获取驱动器顶级目录列表,并遍历子目录   
5///注:本程序参考《C#程序设计》   
6/// </summary>

///

1<param name="tvw"/>

///

1<param name="isSource"/>

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

Published At
Categories with Web编程
Tagged with
comments powered by Disqus