主要函数:(具体实例在下面)

//必须先引用命名空间:System.IO
//使用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;
}

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");
}
}
}

利用递归遍历文件夹和文件存入TreeView相关推荐

  1. [C#(WebForm)] - 利用递归遍历文件夹和文件存入TreeView

    主要函数:(具体实例在下面) //必须先引用命名空间:System.IO //使用relateTreeView函数时 path 路径使用本地路径,或经过Server.MapPath("服务器 ...

  2. C#递归遍历指定目录下文件和文件夹

    1 #region 使用递归查询某路径中的文件结构 2 3 4 public static void CheckFilePath() 5 { 6 ReadFilePath(@"E:\Test ...

  3. python 遍历文件夹下文件修改并保存_利用python完成自动化的任务之遍历文件夹修改文件之后并保存备份...

    #利用python完成自动化的任务 #遍历文件夹里面的所有的内容--然后打开---利用正则表达式修改文本的内容(re.sub)---然后写入到新的文本内容中 import docx import re ...

  4. 【python】os模块 递归删除文件夹所有文件 --笔记

    ''' os.environ 获取系统的环境变量 os.name nt -- windows \r\n | posix --- Linux \nos.path:''' import osprint(o ...

  5. C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件.......

    本文收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件.指定文件夹下 面的所有内容copy到目标文件夹下面.指定文件夹下面的所有内 ...

  6. [转载] Python递归遍历目录下所有文件查找指定文件

    参考链接: Python目录和文件管理 之前看到网上有人说『os.path.isdir()判断必须写绝对路径』,当时心想Python不是有迭代上下文吗,为什么不行?遂作本文验证之 代码部分 考虑用一个 ...

  7. 利用python将文件夹中子文件夹中的图片数目大于小于指定的数目分类

    利用python将文件夹中子文件夹中的图片数目大于小于指定的数目分类 find ./ -name ".DS_Store" -depth -exec rm {} \;  Mac 删除 ...

  8. smbj使用smb2及smb3协议遍历文件夹或者文件的方法

      前言:最近有个需求要读取NAS中的数据,NAS是以共享文件夹的形式来提供数据的,需要通过java来调用,最开始使用的jcifs,后来发现jcfis只支持smb1协议,而NAS提供的数据要用smb2 ...

  9. python 遍历文件夹和文件

    文件结构如下图 path = r"文件夹1" 遍历1层下的所有文件名和文件夹名 import os fileList = os.listdir(path) # 遍历1层 print ...

最新文章

  1. raid模式_基于网络的磁盘热备技术|网络RAID-1
  2. 测试人员的独特价值体会
  3. Android - 广播机制和Service
  4. 初中计算机基础知识教程考试,2017年职称计算机考试基础知识教程详解(三十一)...
  5. 跟我一起学Redis之五种基本类型及其应用场景举例(干了6个小时)
  6. 关于HbSrv.exe
  7. element 搜索匹配_分享一个element-ui级联选择器的搜索问题,顺便问下有没有解决方案。...
  8. 手把手教你搭建自己的个人博客(图文教程)
  9. 智能实验室-杀马(Defendio) 4.27.0.951
  10. messagebox 全部使用_商业篇 | 使用python开发性格分析工具卖钱
  11. 电商无线页面设计手机移动端的设计模板
  12. 深度学习TF—8.经典CNN模型—LeNet-5、VGG13、AlexNet、GoogLeNet、ResNet、DenseNet
  13. Ubuntu18.04下NVIDIA CUDA安装指南和DeepLearning4J GPU配置
  14. word修订模式怎么彻底关闭_word修订模式取消不了
  15. java提取图片文字
  16. 私域运营中引流加爆微信好友的方法
  17. 新浪小编为您介绍留声机的古与今
  18. oracle误删除一条数据库,Oracle误删除数据的恢复方法
  19. 电商 竞品分析_电商平台竞品分析报告.docx
  20. HTML和CSS3写的switch插件

热门文章

  1. leetcode刷题:1.无重复字符的最长字串
  2. mysql 安装1364_安装完MySQL,在配置最后一步报错error Nr.1364
  3. python yield
  4. `object.__init__`
  5. Hadoop HIVE 基本数据类型
  6. Sphinx API文档例子
  7. landset8各波段_landsat8波段
  8. chrome charset使用_使用JWT保护你的Spring Boot应用 Spring Security实战
  9. 数据库容灾、复制解决方案全分析
  10. Linux的文件传输工具(WinSCP)付下载连接