[C#(WebForm)] - 利用递归遍历文件夹和文件存入TreeView
生活随笔
收集整理的這篇文章主要介紹了
[C#(WebForm)] - 利用递归遍历文件夹和文件存入TreeView
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
主要函數:(具體實例在下面)
//必須先引用命名空間:System.IO//使用relateTreeView函數時 path 路徑使用本地路徑,或經過Server.MapPath("服務器的文件路徑")解析過的路徑
//例如:relateTreeView(TreeView1, "D:\\Download");
publicvoid relateTreeView(TreeView tv,string path)
{
tv.Nodes.Clear(); //清空TreeView
tv.Nodes.Add(new TreeNode()); //添加新節點
string[] pathinfo = Path.GetFullPath(path.Trim()).Split(char.Parse("\\")); //得到文件路徑數組
tv.Nodes[0].Text = pathinfo[pathinfo.Length -1]; //得到文件夾名
tv.Nodes[0].Value = path; //得到文件夾的詳細本地路徑
tv.Nodes[0].Expanded =true; //展開根節點
tv.Nodes[0].ImageUrl ="../圖片/Root.gif"; //根節點圖片
TraversingCatalog(tv.Nodes[0], path); //調用函數
}
publicbool TraversingCatalog(TreeNode tn, string path) //遍歷文件夾
{
if (Directory.Exists(path) ==false) { returnfalse; }
DirectoryInfo dirInfo =new DirectoryInfo(path);
int allNum = dirInfo.GetDirectories().Length + dirInfo.GetFiles("*.*").Length;
if (allNum ==0) //沒有任何文件夾和文件就建立"(空白)"節點并返回false
{
TreeNode empty =new TreeNode();
empty.Text ="(空白)"; //得到文件名
empty.Value =""; //得到文件的詳細本地路徑
empty.ImageUrl =""; //節點圖片
//empty.Expanded = false; //折疊節點
tn.ChildNodes.Add(empty); //添加新節點
returnfalse;
}
//循環文件夾(避免混亂,先循環文件夾)
int folderIndex =-1; //文件夾索引
foreach (DirectoryInfo folder in dirInfo.GetDirectories())
{
folderIndex++;
TreeNode folderNode =new TreeNode();
folderNode.Text = folder.Name; //得到文件夾名
folderNode.Value = folder.FullName; //得到文件夾的詳細本地路徑
folderNode.ToolTip = folder.Name; //得到文件夾名
folderNode.Expanded =false; //折疊節點
folderNode.ImageUrl ="../圖片/Folder.gif"; //節點圖片
tn.ChildNodes.Add(folderNode); //添加新節點
TraversingCatalog(tn.ChildNodes[folderIndex], path +"/"+ folder.Name); //遞歸遍歷其它文件夾
}
//循環文件
foreach (FileInfo file in dirInfo.GetFiles("*.*")) //循環擴展名為*.*的文件
{
TreeNode fileNode =new TreeNode();
fileNode.Text = file.Name; //得到文件名
fileNode.Value = file.FullName; //得到文件的詳細本地路徑
fileNode.ToolTip = file.Name; //得到文件名
fileNode.Expanded =false; //折疊節點
fileNode.ImageUrl ="../圖片/TXT.gif"; //節點圖片
tn.ChildNodes.Add(fileNode); //添加新節點
}
returntrue;
}
?
?
?
?
1.先添加TreeView控件(名為:TreeView1)
2.添加下面代碼到Default.aspx.cs文件中
示例:
using System;using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
namespace WebApplication1
{
publicpartialclass _Default : System.Web.UI.Page
{
//使用relateTreeView函數時 path 路徑使用本地路徑,或經過Server.MapPath("服務器的文件路徑")解析過的路徑
//例如:relateTreeView(TreeView1, "D:\\Download");
publicvoid relateTreeView(TreeView tv, string path)
{
tv.Nodes.Clear(); //清空TreeView
tv.Nodes.Add(new TreeNode()); //添加新節點
string[] pathinfo = Path.GetFullPath(path.Trim()).Split(char.Parse("\\")); //得到文件路徑數組
tv.Nodes[0].Text = pathinfo[pathinfo.Length -1]; //得到文件夾名
tv.Nodes[0].Value = path; //得到文件夾的詳細本地路徑
tv.Nodes[0].Expanded =true; //展開根節點
tv.Nodes[0].ImageUrl ="../圖片/Root.gif"; //根節點圖片
TraversingCatalog(tv.Nodes[0], path); //調用函數
}
publicbool TraversingCatalog(TreeNode tn, string path) //遍歷文件夾
{
if (Directory.Exists(path) ==false) { returnfalse; }
DirectoryInfo dirInfo =new DirectoryInfo(path);
int allNum = dirInfo.GetDirectories().Length + dirInfo.GetFiles("*.*").Length;
if (allNum ==0) //沒有任何文件夾和文件就建立"(空白)"節點并返回false
{
TreeNode empty =new TreeNode();
empty.Text ="(空白)"; //得到文件名
empty.Value =""; //得到文件的詳細本地路徑
empty.ImageUrl =""; //節點圖片
//empty.Expanded = false; //折疊節點
tn.ChildNodes.Add(empty); //添加新節點
returnfalse;
}
//循環文件夾(避免混亂,先循環文件夾)
int folderIndex =-1; //文件夾索引
foreach (DirectoryInfo folder in dirInfo.GetDirectories())
{
folderIndex++;
TreeNode folderNode =new TreeNode();
folderNode.Text = folder.Name; //得到文件夾名
folderNode.Value = folder.FullName; //得到文件夾的詳細本地路徑
folderNode.ToolTip = folder.Name; //得到文件夾名
folderNode.Expanded =false; //折疊節點
folderNode.ImageUrl ="../圖片/Folder.gif"; //節點圖片
tn.ChildNodes.Add(folderNode); //添加新節點
TraversingCatalog(tn.ChildNodes[folderIndex], path +"/"+ folder.Name); //遞歸遍歷其它文件夾
}
//循環文件
foreach (FileInfo file in dirInfo.GetFiles("*.*")) //循環擴展名為*.*的文件
{
TreeNode fileNode =new TreeNode();
fileNode.Text = file.Name; //得到文件名
fileNode.Value = file.FullName; //得到文件的詳細本地路徑
fileNode.ToolTip = file.Name; //得到文件名
fileNode.Expanded =false; //折疊節點
fileNode.ImageUrl ="../圖片/TXT.gif"; //節點圖片
tn.ChildNodes.Add(fileNode); //添加新節點
}
returntrue;
}
protectedvoid Page_Load(object sender, EventArgs e)
{
relateTreeView(TreeView1, "D:\\Download");
}
}
}
轉載于:https://www.cnblogs.com/hcbin/archive/2010/03/11/1683240.html
總結
以上是生活随笔為你收集整理的[C#(WebForm)] - 利用递归遍历文件夹和文件存入TreeView的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 控制好你的 Wordpress 侧边栏
- 下一篇: 不知是哪个家伙写的,相当的有才啊!