利用递归遍历文件夹和文件存入TreeView
主要函数:(具体实例在下面)
//使用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.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相关推荐
- [C#(WebForm)] - 利用递归遍历文件夹和文件存入TreeView
主要函数:(具体实例在下面) //必须先引用命名空间:System.IO //使用relateTreeView函数时 path 路径使用本地路径,或经过Server.MapPath("服务器 ...
- C#递归遍历指定目录下文件和文件夹
1 #region 使用递归查询某路径中的文件结构 2 3 4 public static void CheckFilePath() 5 { 6 ReadFilePath(@"E:\Test ...
- python 遍历文件夹下文件修改并保存_利用python完成自动化的任务之遍历文件夹修改文件之后并保存备份...
#利用python完成自动化的任务 #遍历文件夹里面的所有的内容--然后打开---利用正则表达式修改文本的内容(re.sub)---然后写入到新的文本内容中 import docx import re ...
- 【python】os模块 递归删除文件夹所有文件 --笔记
''' os.environ 获取系统的环境变量 os.name nt -- windows \r\n | posix --- Linux \nos.path:''' import osprint(o ...
- C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件.......
本文收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件.指定文件夹下 面的所有内容copy到目标文件夹下面.指定文件夹下面的所有内 ...
- [转载] Python递归遍历目录下所有文件查找指定文件
参考链接: Python目录和文件管理 之前看到网上有人说『os.path.isdir()判断必须写绝对路径』,当时心想Python不是有迭代上下文吗,为什么不行?遂作本文验证之 代码部分 考虑用一个 ...
- 利用python将文件夹中子文件夹中的图片数目大于小于指定的数目分类
利用python将文件夹中子文件夹中的图片数目大于小于指定的数目分类 find ./ -name ".DS_Store" -depth -exec rm {} \; Mac 删除 ...
- smbj使用smb2及smb3协议遍历文件夹或者文件的方法
前言:最近有个需求要读取NAS中的数据,NAS是以共享文件夹的形式来提供数据的,需要通过java来调用,最开始使用的jcifs,后来发现jcfis只支持smb1协议,而NAS提供的数据要用smb2 ...
- python 遍历文件夹和文件
文件结构如下图 path = r"文件夹1" 遍历1层下的所有文件名和文件夹名 import os fileList = os.listdir(path) # 遍历1层 print ...
最新文章
- raid模式_基于网络的磁盘热备技术|网络RAID-1
- 测试人员的独特价值体会
- Android - 广播机制和Service
- 初中计算机基础知识教程考试,2017年职称计算机考试基础知识教程详解(三十一)...
- 跟我一起学Redis之五种基本类型及其应用场景举例(干了6个小时)
- 关于HbSrv.exe
- element 搜索匹配_分享一个element-ui级联选择器的搜索问题,顺便问下有没有解决方案。...
- 手把手教你搭建自己的个人博客(图文教程)
- 智能实验室-杀马(Defendio) 4.27.0.951
- messagebox 全部使用_商业篇 | 使用python开发性格分析工具卖钱
- 电商无线页面设计手机移动端的设计模板
- 深度学习TF—8.经典CNN模型—LeNet-5、VGG13、AlexNet、GoogLeNet、ResNet、DenseNet
- Ubuntu18.04下NVIDIA CUDA安装指南和DeepLearning4J GPU配置
- word修订模式怎么彻底关闭_word修订模式取消不了
- java提取图片文字
- 私域运营中引流加爆微信好友的方法
- 新浪小编为您介绍留声机的古与今
- oracle误删除一条数据库,Oracle误删除数据的恢复方法
- 电商 竞品分析_电商平台竞品分析报告.docx
- HTML和CSS3写的switch插件
热门文章
- leetcode刷题:1.无重复字符的最长字串
- mysql 安装1364_安装完MySQL,在配置最后一步报错error Nr.1364
- python yield
- `object.__init__`
- Hadoop HIVE 基本数据类型
- Sphinx API文档例子
- landset8各波段_landsat8波段
- chrome charset使用_使用JWT保护你的Spring Boot应用 Spring Security实战
- 数据库容灾、复制解决方案全分析
- Linux的文件传输工具(WinSCP)付下载连接