分享

ASP.NET(C#)-利用递归遍历文件夹和文件存入TreeView_网站学堂_asp p...

 liyuepiaoxue 2010-08-18

//必须先引用命名空间:System.IO
//
使用relateTreeView函数时 path 路径使用本地路径,或经过Server.MapPath("服务器的文件路径")解析过的路径
//例如:relateTreeView(TreeView1, path);

public void 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);      //调用函数
}
public bool TraversingCatalog(TreeNode tn, string path) //遍历文件夹

{
   
if (Directory.Exists(path) == false) { return false
; }
    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); //添加新节点
        return false;
    }

   
//循环文件夹(避免混乱,先循环文件夹)

    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);    //添加新节点
    }
   
return true
;
}

 

 

 

 

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
{
public partial class _Default : System.Web.UI.Page
{
//使用relateTreeView函数时 path 路径使用本地路径,或经过Server.MapPath("服务器的文件路径")解析过的路径
//例如:relateTreeView(TreeView1, "D:\\Download");
public void 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); //调用函数
}
public bool TraversingCatalog(TreeNode tn, string path) //遍历文件夹
{
if (Directory.Exists(path) == false) { return false; }
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); //添加新节点
return false;
}

//循环文件夹(避免混乱,先循环文件夹)
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); //添加新节点
}
return true;
}

protected void Page_Load(object sender, EventArgs e)
{
relateTreeView(TreeView1,
"D:\\Download");
}
}
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多