• [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");
    }
    }
    }
  • 相关阅读:
    逆波兰计算器
    单链表 头指针与头结点
    Python中sorted()方法的用法
    python 元组
    Python的lambda匿名函数
    sublime text 2
    python语句讲解
    URAL 1081 Binary Lexicographic Sequence
    POJ 3623 Best Cow Line, Gold(字符串处理)
    POJ 2142:The Balance_扩展欧几里得(多组解)
  • 原文地址:https://www.cnblogs.com/hcbin/p/1683240.html
Copyright © 2020-2023  润新知