1. namespace Vue.Content
  2. {
  3. public class FileNames
  4. {
  5. public int id { get; set; }
  6. public string text { get; set; }
  7. public state state { get; set; }
  8. public List<FileNames> children { get; set; }
  9. public string icon { get; set; }
  10. }
  11. public class state
  12. {
  13. public bool opened { get; set; }
  14. }
  15. //以上字段为树形控件中需要的属性
  16. public class GetSystemAllPath : Controller
  17. {
  18. //获得指定路径下所有文件名
  19. public static List<FileNames> getFileName(List<FileNames> list, string filepath)
  20. {
  21. DirectoryInfo root = new DirectoryInfo(filepath);
  22. foreach (FileInfo f in root.GetFiles())
  23. {
  24. list.Add(new FileNames
  25. {
  26. text = f.Name,
  27. state = new state { opened = false },
  28. icon = "jstree-file"
  29. });
  30. }
  31. return list;
  32. }
  33. //获得指定路径下的所有子目录名
  34. // <param name="list">文件列表</param>
  35. // <param name="path">文件夹路径</param>
  36. public static List<FileNames> GetallDirectory(List<FileNames> list, string path) {
  37. DirectoryInfo root = new DirectoryInfo(path);
  38. var dirs = root.GetDirectories();
  39. if (dirs.Count()!=) {
  40. foreach (DirectoryInfo d in dirs)
  41. {
  42. list.Add(new FileNames
  43. {
  44. text = d.Name,
  45. state = new state { opened = false },
  46. children = GetallDirectory(new List<FileNames>(), d.FullName)
  47. });
  48. }
  49. }
  50. list = getFileName(list, path);
  51. return list;
  52. }
  53. }
  54. }

以上为核心部分!!!

后台返回代码:Sample/GetAllPath

  1. [HttpGet("[action]")]
  2. public List<FileNames> GetAllPath() {
  3. //获取当前系统的根路径
  4. string rootpath = $"{hostingEnv.ContentRootPath}/";
  5. var list = GetSystemAllPath.GetallDirectory(new List<FileNames>(), rootpath).ToArray();
  6. return list.ToList();
  7. }

前台Html:

  1. <div id="demo"></div>

js部分:

  1. $('#demo')
  2. //jstree listen for event
  3. .on('changed.jstree', function (e, data) {
  4. if (data && data.selected && data.selected.length) {
  5. $('#selectpath').val(data.instance.get_path(data.selected[0], "/", 0));
  6. } else {
  7. $('#selectpath').val('Select a file from the tree.');
  8. }
  9. }).jstree({
  10. 'core': {
  11. 'data': {
  12. "url": "api/Sample/GetAllPath",
  13. "data": function (node: any) {
  14. return { "id": node.id };
  15. }
  16. }
  17. }
  18. });

前端树形控件使用的是jstree,具体使用方法可以见其官网:https://www.jstree.com/

最后贴上效果图:

C# 获取指定路径下的文件结构(树形结构)的更多相关文章

  1. Python获取指定路径下所有文件的绝对路径

    需求 给出制定目录(路径),获取该目录下所有文件的绝对路径: 实现 方式一: import os def get_file_path_by_name(file_dir): ''' 获取指定路径下所有文 ...

  2. C#中获取指定路径下特定开头和后缀的所有文件

    场景 指定一个文件路径,获取当前路径下所有文件,并筛选出以指定内容开头和结尾的文件. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 ...

  3. C#中获取指定路径下指定后缀名的所有文件的路径的list

    场景 指定一个路径和后缀名,查找这个路径下所有以此后缀名结尾的文件. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序猿 获取 ...

  4. nodejs 获取指定路径下所有的文件夹名

    示例:获取 ./components 下所有的文件夹名称 let components = [] const files = fs.readdirSync('./components') files. ...

  5. java获取指定路径下的指定文件/java.io.File.listFiles(FilenameFilter filter)

    java.io.File.listFiles(FilenameFilter filter) 返回抽象路径名数组,表示在目录中此抽象路径名表示,满足指定过滤器的文件和目录. 声明 以下是java.io. ...

  6. C#遍历指定路径下的目录

    通过指定路径訪问路径下的文件.在C#的开发中主要利用了Directory类和DirectoryInfo类,简要介绍Directory类中的成员:命名空间 System.IO 命名空间 1.Create ...

  7. <UnityTheGreat><001>获取指定目录下指定类型的所有文件的名称

    #region Environment Windows 10 Unity 2019.4.16f1c1 LTS VSCode 1.52 https://github.com/MirzkisD1Ex0/U ...

  8. PHP 获取指定目录下所有文件(包含子目录)

    PHP 获取指定目录下所有文件(包含子目录) //glob — 寻找与模式匹配的文件路径 $filter_dir = array('CVS', 'templates_c', 'log', 'img', ...

  9. 指定路径下建立Access数据库并插入数据

    今天刚刚开通博客,想要把我这几天完成小任务的过程,记录下来.我从事软件开发的时间不到1年,写的不足之处,还请前辈们多多指教. 上周四也就是2016-04-14号上午,部门领导交给我一个小任务,概括来讲 ...

随机推荐

  1. useful urls

    数据挖掘技术: http://ddl.escience.cn/f/IwoF?rid=8188575 李航 统计学习方法: http://ddl.escience.cn/f/Iwn0

  2. python 使用pip安装使用国内镜像加速下载安装包的方法

    清华大学提供开源镜像站:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/ pypi 镜像每 5 分钟同步一次. pip install 包的名字 == 版 ...

  3. ML_Clustering

    西瓜书学习...ing K均值 k-means 给定样本集$ D = {X_1,X_2,...X_n} \(,k-means针对聚类所得簇划分\)C = {C_1,C_2,...,C_k}$最小化平方 ...

  4. 13. Forensics (取证 4个)

    Maltego是一个取证和数据挖掘应用程序. 它能够查询各种公共数据源,并以图形方式描绘人员,公司,网站和文档等实体之间的关系. Maltego也是一个开源智能,但不是开源软件. Helix The ...

  5. 单线拨号上网时RouterOS内网端口映射的配置

    很多时候routeros 是通过单线拨号上网,假设PPP接口名为pppoe-out1 若需要添加内网ip=18.16.1.92主机的3389端口映射 ,可以在命令行键入: ip firewall na ...

  6. Android L2TP Client Setup

    原文链接:http://www.softether.org/4-docs/2-howto/9.L2TPIPsec_Setup_Guide_for_SoftEther_VPN_Server/3.Andr ...

  7. ubuntu 主题和zsh终端

    ubuntu 主题和zsh终端 1) sudo apt-get install unity-tweak-tool  sudo add-apt-repository ppa:noobslab/theme ...

  8. How to detect, enable and disable SMBv1, SMBv2, and SMBv3 in Windows and Windows Server

    转自:https://support.microsoft.com/en-us/help/2696547/detect-enable-disable-smbv1-smbv2-smbv3-in-windo ...

  9. Java高级特性 第12节 XML技术

    一.XML简介 1. XML介绍 XML是可扩展标记语言(Extensible Markup Language ),XML是一种数据格式,类似 HTML,是使用标签进行内容描述的技术,与HTML不同的 ...

  10. 敏捷开发SCM

    敏捷的目标:自组织,提高交付质量和交付速度:敏捷中实现拥抱变化是通过迭代增量实现的:所谓的迭代是循环,循环一种机制和模式,增量则是价值的增加,迭代增量,就是通过每次工作流程的循环实现业务价值的提升:那 ...