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] = "上次寫(xiě)入時(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# 設(shè)計(jì)模式系列教程-簡(jiǎn)單工廠模式
簡(jiǎn)單工廠模式職責(zé)單一,實(shí)現(xiàn)簡(jiǎn)單,且實(shí)現(xiàn)了客戶端代碼與具體實(shí)現(xiàn)的解耦。2016-06-06
c#中SqlHelper封裝SqlDataReader的方法
這篇文章主要介紹了c#中SqlHelper封裝SqlDataReader的方法,涉及C#針對(duì)數(shù)據(jù)庫(kù)相關(guān)操作封裝與使用的技巧,需要的朋友可以參考下2015-05-05
Unity3D實(shí)現(xiàn)人物轉(zhuǎn)向與移動(dòng)
這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)人物轉(zhuǎn)向與移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
C#自定義控件實(shí)現(xiàn)TextBox禁止粘貼的方法
這篇文章主要介紹了C#自定義控件實(shí)現(xiàn)TextBox禁止粘貼的方法,結(jié)合具體實(shí)例形式分析了C#自定義控件的創(chuàng)建、使用方法及TextBox禁止粘貼的實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06
c#使用linq技術(shù)創(chuàng)建xml文件的小例子
c#使用linq技術(shù)創(chuàng)建xml文件的小例子,需要的朋友可以參考一下2013-03-03
解析C#網(wǎng)絡(luò)編程中的Http請(qǐng)求
這篇文章主要介紹了C#網(wǎng)絡(luò)編程中的Http請(qǐng)求,不過(guò)這次也使我對(duì)C#網(wǎng)絡(luò)編程了解的更多,算是一次學(xué)習(xí)經(jīng)歷吧,文章結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03

