C#实现获取系统目录并以Tree树叉显示的方法
本文讲述C#获取Windows系统目录,如何目录遍历以及将信息捆绑在TreeView中显示出来的实现方法,具体实现代码如下:
usingSystem;
usingSystem.Drawing;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Windows.Forms;
usingSystem.Data;
usingSystem.IO;
namespace获取系统目录
{
publicclassForm1:System.Windows.Forms.Form
{
privateSystem.Windows.Forms.TreeViewtreeView1;
privateSystem.ComponentModel.IContainercomponents;
privateSystem.Windows.Forms.Buttonbutton2;
privateSystem.Windows.Forms.Labellabel2;
privateSystem.Windows.Forms.Buttonbutton1;
privateSystem.Windows.Forms.TextBoxtextBox1;
privateSystem.Windows.Forms.Labellabel1;
publicForm1()
{
InitializeComponent();
FillTree(treeView1,true);//显示所有文件夹以及文件
}
protectedoverridevoidDispose(booldisposing)
{
if(disposing)
{
if(components!=null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
#regionWindows窗体设计器生成的代码
privatevoidInitializeComponent()
{
this.textBox1=newSystem.Windows.Forms.TextBox();
this.label2=newSystem.Windows.Forms.Label();
this.label1=newSystem.Windows.Forms.Label();
this.treeView1=newSystem.Windows.Forms.TreeView();
this.button1=newSystem.Windows.Forms.Button();
this.button2=newSystem.Windows.Forms.Button();
this.SuspendLayout();
this.textBox1.Location=newSystem.Drawing.Point(280,56);
this.textBox1.Multiline=true;
this.textBox1.Name="textBox1";
this.textBox1.Size=newSystem.Drawing.Size(208,192);
this.textBox1.TabIndex=3;
this.textBox1.Text="";
this.label2.AutoSize=true;
this.label2.Location=newSystem.Drawing.Point(280,24);
this.label2.Name="label2";
this.label2.Size=newSystem.Drawing.Size(116,17);
this.label2.TabIndex=4;
this.label2.Text="文件夹或文件信息:";
this.label1.AutoSize=true;
this.label1.Location=newSystem.Drawing.Point(16,24);
this.label1.Name="label1";
this.label1.Size=newSystem.Drawing.Size(153,17);
this.label1.TabIndex=5;
this.label1.Text="请选择一个文件夹或文件:";
this.treeView1.ImageIndex=-1;
this.treeView1.Location=newSystem.Drawing.Point(16,56);
this.treeView1.Name="treeView1";
this.treeView1.SelectedImageIndex=-1;
this.treeView1.Size=newSystem.Drawing.Size(184,192);
this.treeView1.TabIndex=6;
this.button1.Location=newSystem.Drawing.Point(216,104);
this.button1.Name="button1";
this.button1.Size=newSystem.Drawing.Size(48,32);
this.button1.TabIndex=7;
this.button1.Text="显示";
this.button1.Click+=newSystem.EventHandler(this.button1_Click);
this.button2.Location=newSystem.Drawing.Point(216,168);
this.button2.Name="button2";
this.button2.Size=newSystem.Drawing.Size(48,32);
this.button2.TabIndex=8;
this.button2.Text="清空";
this.button2.Click+=newSystem.EventHandler(this.button2_Click);
this.AutoScaleBaseSize=newSystem.Drawing.Size(6,14);
this.ClientSize=newSystem.Drawing.Size(504,277);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Controls.Add(this.treeView1);
this.Controls.Add(this.label1);
this.Controls.Add(this.label2);
this.Controls.Add(this.textBox1);
this.Name="Form1";
this.Text="Form1";
this.ResumeLayout(false);
}
#endregion
[STAThread]
staticvoidMain()
{
Application.Run(newForm1());
}
//填充目录和文件到TreeView控件中
//isSource表示是否显示文件
privatevoidFillTree(TreeViewtreeView,boolisSource)
{
treeView.Nodes.Clear();//清空
//获取系统上的所有逻辑驱动器
string[]strDrives=Environment.GetLogicalDrives();
foreach(stringrootDirectoryNameinstrDrives)
{
try
{
//获取驱动器顶级目录列表
DirectoryInfodir=newDirectoryInfo(rootDirectoryName);
//如果获得的目录信息正确,则将它添加到TreeView控件中
if(dir.Exists==true)
{
TreeNodenewNode=newTreeNode(rootDirectoryName);
treeView.Nodes.Add(newNode);
if(isSource)
{
GetSubDirectoryNodes(newNode,newNode.Text,true);
}
else
{
GetSubDirectoryNodes(newNode,newNode.Text,false);
}
}
}
catch(Exceptione)
{
MessageBox.Show(e.Message);
}
}
}
//遍历子目录
privatevoidGetSubDirectoryNodes(TreeNodeparentNode,stringfullName,boolgetFileNames)
{
DirectoryInfodir=newDirectoryInfo(fullName);
DirectoryInfo[]subDirs=dir.GetDirectories();
//为每一个子目录添加一个子节点
foreach(DirectoryInfosubDirinsubDirs)
{
//不显示隐藏文件夹
if((subDir.Attributes&FileAttributes.Hidden)!=0)
{
continue;
}
TreeNodesubNode=newTreeNode(subDir.Name);
parentNode.Nodes.Add(subNode);
//递归调用GetSubDirectoryNodes
GetSubDirectoryNodes(subNode,subDir.FullName,getFileNames);
}
//获取目录中的文件
if(getFileNames)
{
FileInfo[]files=dir.GetFiles();
foreach(FileInfofileinfiles)
{
TreeNodefileNode=newTreeNode(file.Name);
parentNode.Nodes.Add(fileNode);
}
}
}
privatevoidbutton1_Click(objectsender,System.EventArgse)
{
try
{
TreeNodeselectedNode=treeView1.SelectedNode;
DirectoryInfoinfo=newDirectoryInfo(selectedNode.FullPath);
string[]strArray=newstring[4];
strArray[0]="完整路径名:"+info.FullName;
strArray[1]="创建时间:"+info.CreationTime.ToString();
strArray[2]="上次访问时间:"+info.LastAccessTime.ToString();
strArray[3]="上次写入时间:"+info.LastWriteTime.ToString();
textBox1.Lines=strArray;
}
catch(Exceptionexc)
{
MessageBox.Show(exc.Message);
}
}
privatevoidbutton2_Click(objectsender,System.EventArgse)
{
textBox1.Text="";
}
}
}