大家好,好久没写博客了,今天写程序遇到了要用得到磁盘目录的一个功能,于是网上查了点资料,但是没有合适的。于是基于资料的启发,重新改写了一个。现在与大家一块分享下,希望大家能够提供更好的方法。
代码如下:
//在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的实例。希望大家能有更好的方法贴出来,共同进步。