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=""; } } }