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

//必须先引用命名空间: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相关推荐

  1. 利用递归遍历文件夹和文件存入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. [bzoj2815] [洛谷P2597] [ZJOI2012] 灾难
  2. 《D3.js数据可视化实战手册》—— 1.1 简介
  3. 漫步最优化三十四——高斯-牛顿法
  4. RN style使用以及常用样式总结
  5. 利用BI进行报表分析(二)--SSAS多维数据集以及维度的建立
  6. Android技术精髓-Bitmap详解
  7. 多个python则可以通过指定python的位置来升级或安装对应的库
  8. 机器视觉:远心镜头使用规则
  9. 制作本地视频网站 苹果cms 超详细
  10. 腾讯云云服务器的功能与优势-Unirech腾讯云代充
  11. HDFS数据加密空间--Encryption zone
  12. Python:for...in range() 、 for...in enumerate() 、for...in() 、for...in zip()的用法
  13. 精密划片机维护及保养
  14. 深夜更新博客的美女们[组图]
  15. jetbrains(IDEA/PyCharm)官网地址打不开
  16. android ram rom测试工具,RAM与ROM测试方法
  17. 2021-06-21指针与变量 和字符数组作业。
  18. 【加水印】如何批量加文字水印和图片水印,如何批量添加文件名水印到图片里?图片的名称批量写到图片上面?
  19. kaggle:NBA球员投篮数据分析与可视化(一)
  20. php mysql utf 8_PHP+MySQL中对UTF-8,UTF8(utf8),set names gbk 的理解

热门文章

  1. 请解释为什么集合类没有实现Cloneable和Serializable接口?
  2. 如何使用Fescar保证Dubbo微服务间的一致性
  3. SpringBoot项目中静态资源加载失败,那可能是自定义配置类继承了WebMvcConfigurationSupport这个类
  4. 多个vue项目合并成一个_集美们,快看如何一步将多个PDF合并成一个PDF
  5. C/C++基础知识点(二)
  6. 奇异值分解 VS 特征值分解
  7. 什么是GDT,LDT,GDTR及LDTR?
  8. 4.1.9 OS之文件系统的层次结构
  9. 3.1.11 OS之段页式存储管理(段表、页表、地址转换、)
  10. 32位 shell.efi x86_Linux 的 32 位内核自 Meltdown 以来一直有问题