C#获取磁盘目录结构并显示TreeView控件中
大家好,好久没写博客了,今天写程序遇到了要用得到磁盘目录的一个功能,于是网上查了点资料,但是没有合适的。于是基于资料的启发,重新改写了一个。现在与大家一块分享下,希望大家能够提供更好的方法。
代码如下:
//在TreeView1中显示磁盘目录及文件
string[] strDir = Directory.GetLogicalDrives();//获取本地计算机上格式为《驱动器名》:\的逻辑驱动器的名称
tvMenu.Nodes.Clear();//清空TreeViee
tvMenu.BeginUpdate();//首先禁止TreeViee的重绘
foreach (string item in strDir)//循环将磁盘名称加入到TreeView中
{
TreeNode tn = new TreeNode(item);
tvMenu.Nodes.Add(tn);
}
for (int i = 0; i < strDir.Length - 1; i++)//根据得到的磁盘名称循环获取磁盘目录的文件
{
string[] files = Directory.GetFiles(strDir[i]);//获取指定磁盘下的文件
for (int j = 0; j < files.Length - 1; j++)
{
TreeNode tn = new TreeNode(files[j].ToString());
tvMenu.Nodes[i].Nodes.Add(tn);
}
}
上面代码要想得到如期效果,还要加下这句代码。忘记贴上去了
tvMenu.EndUpdate();
虽然这样实现了文件的添加,但是文件夹并没有成功,后来思考了一番,于是想到了如下方法。修改后的代码如下
//在TreeView1中显示磁盘目录及文件
string[] strDir = Directory.GetLogicalDrives();//获取本地计算机上格式为《驱动器名》:\的逻辑驱动器的名称
tvMenu.Nodes.Clear();//清空TreeViee
tvMenu.BeginUpdate();//首先禁止TreeViee的重绘
foreach (string item in strDir)//循环将磁盘名称加入到TreeView中
{
TreeNode tn = new TreeNode(item);
tvMenu.Nodes.Add(tn);
}
for (int k = 0; k < strDir.Length-1; k++)
{
DirectoryInfo dInfo = new DirectoryInfo(strDir[k]);
FileSystemInfo[] fsInfos = dInfo.GetFileSystemInfos();
foreach (FileSystemInfo item in fsInfos)
{
if (item is Directory)
{
for (int i = 0; i < strDir.Length - 1; i++)//根据得到的磁盘名称循环获取磁盘目录的文件
{
string[] files = Directory.GetFiles(strDir[i]);//获取指定磁盘下的文件
for (int j = 0; j < files.Length - 1; j++)
{
TreeNode tn = new TreeNode(files[j].ToString());
tvMenu.Nodes[i].Nodes.Add(tn);
}
}
}
else
{
for (int i = 0; i < strDir.Length - 1; i++)//根据得到的磁盘名称循环获取磁盘目录的文件
{
string[] files = Directory.GetFiles(strDir[i]);//获取指定磁盘下的文件
for (int j = 0; j < files.Length - 1; j++)
{
TreeNode tn = new TreeNode(files[j].ToString());
tvMenu.Nodes[i].Nodes.Add(tn);
}
}
}
}
}
tvMenu.EndUpdate();
注记:tvTreeView为TreeView的实例。希望大家能有更好的方法贴出来,共同进步。

浙公网安备 33010602011771号