转自:http://www.jb51.net/article/52282.htm
这篇文章主要介绍了C#实现获取系统目录并以Tree树叉显示的方法,可以加深读者对于C#下数据结构实现方法的认识,需要的朋友可以参考下
本文讲述C#获取Windows系统目录,如何目录遍历以及将信息捆绑在TreeView中显示出来的实现方法,具体实现代码如下:
- using System;
- using System.Drawing;
- using System.Collections;
- using System.ComponentModel;
- using System.Windows.Forms;
- using System.Data;
- using System.IO;
- namespace 获取系统目录
- {
- public class Form1 : System.Windows.Forms.Form
- {
- private System.Windows.Forms.TreeView treeView1;
- private System.ComponentModel.IContainer components;
- private System.Windows.Forms.Button button2;
- private System.Windows.Forms.Label label2;
- private System.Windows.Forms.Button button1;
- private System.Windows.Forms.TextBox textBox1;
- private System.Windows.Forms.Label label1;
- public Form1()
- {
- InitializeComponent();
- FillTree(treeView1, true); // 显示所有文件夹以及文件
- }
- protected override void Dispose( bool disposing )
- {
- if( disposing )
- {
- if (components != null)
- {
- components.Dispose();
- }
- }
- base.Dispose( disposing );
- }
- #region Windows 窗体设计器生成的代码
- private void InitializeComponent()
- {
- this.textBox1 = new System.Windows.Forms.TextBox();
- this.label2 = new System.Windows.Forms.Label();
- this.label1 = new System.Windows.Forms.Label();
- this.treeView1 = new System.Windows.Forms.TreeView();
- this.button1 = new System.Windows.Forms.Button();
- this.button2 = new System.Windows.Forms.Button();
- this.SuspendLayout();
- this.textBox1.Location = new System.Drawing.Point(280, 56);
- this.textBox1.Multiline = true;
- this.textBox1.Name = "textBox1";
- this.textBox1.Size = new System.Drawing.Size(208, 192);
- this.textBox1.TabIndex = 3;
- this.textBox1.Text = "";
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(280, 24);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(116, 17);
- this.label2.TabIndex = 4;
- this.label2.Text = "文件夹或文件信息:";
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(16, 24);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(153, 17);
- this.label1.TabIndex = 5;
- this.label1.Text = "请选择一个文件夹或文件:";
- this.treeView1.ImageIndex = -1;
- this.treeView1.Location = new System.Drawing.Point(16, 56);
- this.treeView1.Name = "treeView1";
- this.treeView1.SelectedImageIndex = -1;
- this.treeView1.Size = new System.Drawing.Size(184, 192);
- this.treeView1.TabIndex = 6;
- this.button1.Location = new System.Drawing.Point(216, 104);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(48, 32);
- this.button1.TabIndex = 7;
- this.button1.Text = "显示";
- this.button1.Click += new System.EventHandler(this.button1_Click);
- this.button2.Location = new System.Drawing.Point(216, 168);
- this.button2.Name = "button2";
- this.button2.Size = new System.Drawing.Size(48, 32);
- this.button2.TabIndex = 8;
- this.button2.Text = "清空";
- this.button2.Click += new System.EventHandler(this.button2_Click);
- this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
- this.ClientSize = new System.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]
- static void Main()
- {
- Application.Run(new Form1());
- }
- // 填充目录和文件到 TreeView 控件中
- // isSource 表示是否显示文件
- private void FillTree(TreeView treeView,bool isSource)
- {
- treeView.Nodes.Clear(); // 清空
- // 获取系统上的所有逻辑驱动器
- string[] strDrives = Environment.GetLogicalDrives();
- foreach(string rootDirectoryName in strDrives)
- {
- try
- {
- // 获取驱动器顶级目录列表
- DirectoryInfo dir = new DirectoryInfo(rootDirectoryName);
- // 如果获得的目录信息正确,则将它添加到 TreeView 控件中
- if (dir.Exists == true)
- {
- TreeNode newNode = new TreeNode(rootDirectoryName);
- treeView.Nodes.Add(newNode);
- if (isSource)
- {
- GetSubDirectoryNodes(newNode, newNode.Text, true);
- }
- else
- {
- GetSubDirectoryNodes(newNode, newNode.Text, false);
- }
- }
- }
- catch(Exception e)
- {
- MessageBox.Show(e.Message);
- }
- }
- }
- // 遍历子目录
- private void GetSubDirectoryNodes(TreeNode parentNode, string fullName, bool getFileNames)
- {
- DirectoryInfo dir = new DirectoryInfo(fullName);
- DirectoryInfo[] subDirs = dir.GetDirectories();
- // 为每一个子目录添加一个子节点
- foreach(DirectoryInfo subDir in subDirs)
- {
- // 不显示隐藏文件夹
- if((subDir.Attributes & FileAttributes.Hidden) != 0)
- {
- continue;
- }
- TreeNode subNode = new TreeNode(subDir.Name);
- parentNode.Nodes.Add(subNode);
- // 递归调用GetSubDirectoryNodes
- GetSubDirectoryNodes(subNode, subDir.FullName, getFileNames);
- }
- // 获取目录中的文件
- if(getFileNames)
- {
- FileInfo[] files = dir.GetFiles();
- foreach(FileInfo file in files)
- {
- TreeNode fileNode = new TreeNode(file.Name);
- parentNode.Nodes.Add(fileNode);
- }
- }
- }
- private void button1_Click(object sender, System.EventArgs e)
- {
- try
- {
- TreeNode selectedNode = treeView1.SelectedNode;
- DirectoryInfo info = new DirectoryInfo(selectedNode.FullPath);
- string [] strArray = new string[4];
- strArray[0] = "完整路径名 : "+ info.FullName;
- strArray[1] = "创建时间 : "+ info.CreationTime.ToString();
- strArray[2] = "上次访问时间 : "+ info.LastAccessTime.ToString();
- strArray[3] = "上次写入时间 : "+ info.LastWriteTime.ToString();
- textBox1.Lines = strArray;
- }
- catch(Exception exc)
- {
- MessageBox.Show(exc.Message);
- }
- }
- private void button2_Click(object sender, System.EventArgs e)
- {
- textBox1.Text = "";
- }
- }
- }
复制代码
|
|