网页素材: 导航菜单选项卡滑动门焦点图图片切换下拉菜单弹出层Tabs链接提示

您的当前位置: 源码爱好者 » 网页制作教程(编程教程) » C#技术教程

C#获取系统目录 以Tree树叉显示

  • 标签:Treeview 获取目录  更新时间:2014-05-23
  • C#获取Windows系统目录,演示如何目录遍历以及将信息捆绑在TreeView中显示出来,C#初学者参见的代码:

    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 = "";
    		}
    	}
    }
  • 已读: 次 收藏本文关闭本文打印本文复制链接
处理 SSI 文件时出错