C# 获取指定路径下的文件结构(树形结构)
namespace Vue.Content
{
public class FileNames
{
public int id { get; set; }
public string text { get; set; }
public state state { get; set; }
public List<FileNames> children { get; set; }
public string icon { get; set; }
}
public class state
{
public bool opened { get; set; }
}
//以上字段为树形控件中需要的属性
public class GetSystemAllPath : Controller
{
//获得指定路径下所有文件名
public static List<FileNames> getFileName(List<FileNames> list, string filepath)
{
DirectoryInfo root = new DirectoryInfo(filepath);
foreach (FileInfo f in root.GetFiles())
{
list.Add(new FileNames
{
text = f.Name,
state = new state { opened = false },
icon = "jstree-file"
});
}
return list;
}
//获得指定路径下的所有子目录名
// <param name="list">文件列表</param>
// <param name="path">文件夹路径</param>
public static List<FileNames> GetallDirectory(List<FileNames> list, string path) {
DirectoryInfo root = new DirectoryInfo(path);
var dirs = root.GetDirectories();
if (dirs.Count()!=) {
foreach (DirectoryInfo d in dirs)
{
list.Add(new FileNames
{
text = d.Name,
state = new state { opened = false },
children = GetallDirectory(new List<FileNames>(), d.FullName)
});
}
}
list = getFileName(list, path);
return list;
}
}
}
以上为核心部分!!!
后台返回代码:Sample/GetAllPath
[HttpGet("[action]")]
public List<FileNames> GetAllPath() {
//获取当前系统的根路径
string rootpath = $"{hostingEnv.ContentRootPath}/";
var list = GetSystemAllPath.GetallDirectory(new List<FileNames>(), rootpath).ToArray();
return list.ToList();
}
前台Html:
<div id="demo"></div>
js部分:
$('#demo')
//jstree listen for event
.on('changed.jstree', function (e, data) {
if (data && data.selected && data.selected.length) {
$('#selectpath').val(data.instance.get_path(data.selected[0], "/", 0));
} else {
$('#selectpath').val('Select a file from the tree.');
}
}).jstree({
'core': {
'data': {
"url": "api/Sample/GetAllPath",
"data": function (node: any) {
return { "id": node.id };
}
}
}
});
前端树形控件使用的是jstree,具体使用方法可以见其官网:https://www.jstree.com/
最后贴上效果图:

C# 获取指定路径下的文件结构(树形结构)的更多相关文章
- Python获取指定路径下所有文件的绝对路径
需求 给出制定目录(路径),获取该目录下所有文件的绝对路径: 实现 方式一: import os def get_file_path_by_name(file_dir): ''' 获取指定路径下所有文 ...
- C#中获取指定路径下特定开头和后缀的所有文件
场景 指定一个文件路径,获取当前路径下所有文件,并筛选出以指定内容开头和结尾的文件. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 ...
- C#中获取指定路径下指定后缀名的所有文件的路径的list
场景 指定一个路径和后缀名,查找这个路径下所有以此后缀名结尾的文件. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序猿 获取 ...
- nodejs 获取指定路径下所有的文件夹名
示例:获取 ./components 下所有的文件夹名称 let components = [] const files = fs.readdirSync('./components') files. ...
- java获取指定路径下的指定文件/java.io.File.listFiles(FilenameFilter filter)
java.io.File.listFiles(FilenameFilter filter) 返回抽象路径名数组,表示在目录中此抽象路径名表示,满足指定过滤器的文件和目录. 声明 以下是java.io. ...
- C#遍历指定路径下的目录
通过指定路径訪问路径下的文件.在C#的开发中主要利用了Directory类和DirectoryInfo类,简要介绍Directory类中的成员:命名空间 System.IO 命名空间 1.Create ...
- <UnityTheGreat><001>获取指定目录下指定类型的所有文件的名称
#region Environment Windows 10 Unity 2019.4.16f1c1 LTS VSCode 1.52 https://github.com/MirzkisD1Ex0/U ...
- PHP 获取指定目录下所有文件(包含子目录)
PHP 获取指定目录下所有文件(包含子目录) //glob — 寻找与模式匹配的文件路径 $filter_dir = array('CVS', 'templates_c', 'log', 'img', ...
- 指定路径下建立Access数据库并插入数据
今天刚刚开通博客,想要把我这几天完成小任务的过程,记录下来.我从事软件开发的时间不到1年,写的不足之处,还请前辈们多多指教. 上周四也就是2016-04-14号上午,部门领导交给我一个小任务,概括来讲 ...
随机推荐
- 前端导出csv
前端导出csv export: function(data, name) { // csv文件的BOM头 \ufeff可以让excel等识别出csv文件的编码 var uri = 'data:text ...
- 实验九 ZStack 广播通信实验
实验九 ZStack 广播通信实验[实验目的]1. 了解 ZigBee 广播通信的原理2. 掌握在 ZigBee 网络中进行广播通信的方法[实验设备]1. 装有 IAR 开发工具的 PC 机一台2. ...
- 炒鸡讨厌换python版本呀
https://www.cnblogs.com/yjlch1016/p/8641910.html 还是说,装个 Anaconda,你好我好大家好. https://blog.csdn.net/qq_3 ...
- 用户控件 RadioButtonList
public static MvcHtmlString RadioButtonList(this HtmlHelper htmlHelper, string name, string codeCate ...
- unity 面试题(答案)
一.什么是渲染管道?是指在显示器上为了显示出图像而经过的一系列必要操作.渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去.主要步骤有:本地坐标->视图坐标->背面裁 ...
- Spark:DataFrame批量导入Hbase的两种方式(HFile、Hive)
Spark处理后的结果数据resultDataFrame可以有多种存储介质,比较常见是存储为文件.关系型数据库,非关系行数据库. 各种方式有各自的特点,对于海量数据而言,如果想要达到实时查询的目的,使 ...
- Java_04循环结构
1.while 循环结构 格式: while(循环条件){ } 关键字 while 后的小括号中的内容是循环条件.循环条件是一个表达式,值为布尔类型. { }大括号中的语句统称为循环操作,又称为循环体 ...
- 【java编程】java的关键字修饰符
一.transient java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.换句话来说就是,用transient关键字标记的成员变量不参与序列化 ...
- Java JVM里堆和栈的区别
参考资料: 1.堆和栈的概念和区别 2.JVM虚拟机
- Day 20 常用模块(三)
一.加密模块 1.加密方式: 1.有解密的加密方式 2.无解密的加密方式,碰撞检查 1.不同数据加密后的结果一定不一致 2.相同数据的加密结果一定是一致 2.hashlib模块 1.基本使用 ciph ...