C#實(shí)現(xiàn)獲取系統(tǒng)目錄并以Tree樹(shù)叉顯示的方法
更新時(shí)間:2014年07月17日 10:54:57 投稿:shichen2014
這篇文章主要介紹了C#實(shí)現(xiàn)獲取系統(tǒng)目錄并以Tree樹(shù)叉顯示的方法,可以加深讀者對(duì)于C#下數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)方法的認(rèn)識(shí),需要的朋友可以參考下
本文講述C#獲取Windows系統(tǒng)目錄,如何目錄遍歷以及將信息捆綁在TreeView中顯示出來(lái)的實(shí)現(xiàn)方法,具體實(shí)現(xiàn)代碼如下:
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.IO; namespace 獲取系統(tǒng)目錄 { 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 窗體設(shè)計(jì)器生成的代碼 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 = "請(qǐng)選擇一個(gè)文件夾或文件:"; 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(); // 清空 // 獲取系統(tǒng)上的所有邏輯驅(qū)動(dòng)器 string[] strDrives = Environment.GetLogicalDrives(); foreach(string rootDirectoryName in strDrives) { try { // 獲取驅(qū)動(dòng)器頂級(jí)目錄列表 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(); // 為每一個(gè)子目錄添加一個(gè)子節(jié)點(diǎn) foreach(DirectoryInfo subDir in subDirs) { // 不顯示隱藏文件夾 if((subDir.Attributes & FileAttributes.Hidden) != 0) { continue; } TreeNode subNode = new TreeNode(subDir.Name); parentNode.Nodes.Add(subNode); // 遞歸調(diào)用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] = "創(chuàng)建時(shí)間 : "+ info.CreationTime.ToString(); strArray[2] = "上次訪問(wèn)時(shí)間 : "+ info.LastAccessTime.ToString(); strArray[3] = "上次寫入時(shí)間 : "+ info.LastWriteTime.ToString(); textBox1.Lines = strArray; } catch(Exception exc) { MessageBox.Show(exc.Message); } } private void button2_Click(object sender, System.EventArgs e) { textBox1.Text = ""; } } }
您可能感興趣的文章:
- C#之Expression表達(dá)式樹(shù)實(shí)例
- 關(guān)于c#二叉樹(shù)的實(shí)現(xiàn)
- C# 遞歸查找樹(shù)狀目錄實(shí)現(xiàn)方法
- ASP.NET C#生成下拉列表樹(shù)實(shí)現(xiàn)代碼
- 一個(gè)很簡(jiǎn)單的jquery+xml+ajax的無(wú)刷新樹(shù)結(jié)構(gòu)(無(wú)css,后臺(tái)是c#)
- C# TreeView無(wú)限目錄樹(shù)實(shí)現(xiàn)方法
- C#使用前序遍歷、中序遍歷和后序遍歷打印二叉樹(shù)的方法
- C#求解哈夫曼樹(shù),實(shí)例代碼
- c#反射表達(dá)式樹(shù)模糊搜索示例
- C#通過(guò)KD樹(shù)進(jìn)行距離最近點(diǎn)的查找
相關(guān)文章
【C#基礎(chǔ)】Substring截取字符串的方法小結(jié)(推薦)
這篇文章主要介紹了Substring截取字符串方法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05C#中靜態(tài)方法和實(shí)例化方法的區(qū)別、使用
這篇文章主要介紹了C#中靜態(tài)方法和實(shí)例化方法的區(qū)別、使用,文中講解的非常細(xì)致,對(duì)大家的學(xué)習(xí)有所幫助,感興趣的朋友可以了解下2020-06-06Unity的IPostprocessBuildWithReport實(shí)用案例深入解析
這篇文章主要為大家介紹了Unity的IPostprocessBuildWithReport實(shí)用案例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05在多線程中調(diào)用winform窗體控件的實(shí)現(xiàn)方法
這篇文章主要介紹了在多線程中調(diào)用winform窗體控件的實(shí)現(xiàn)方法,需要的朋友可以參考下2014-08-08通過(guò)C#實(shí)現(xiàn)發(fā)送自定義的html格式郵件
本篇文章主要介紹了通過(guò)C#實(shí)現(xiàn)發(fā)送自定義的html格式郵件,詳細(xì)的介紹了發(fā)送HTML格式郵件的方法,有興趣的可以了解一下。2017-02-02