本篇是一个案例,其核心通过代码展示代码中的递归这个用法,程序的界面如下:

当点击“加载”按钮时,根据路径中的地址,加载该文件夹下所有的子文件夹和子文件,代码如下:

 1 private void BtnLoad_Click(object sender, EventArgs e)
 2         {
 3             string sPath = txtPath.Text.Trim();
 4             LoadDirAndFile(sPath, tvList.Nodes);
 5         }
 6
 7         private void LoadDirAndFile(string sPath, TreeNodeCollection treeNodeCollection)
 8         {
 9             string strDir = sPath.Substring(sPath.LastIndexOf(@"\") + 1);
10             TreeNode tNode = treeNodeCollection.Add(strDir);
11
12             //加载所有目录
13             string[] strDir1 = Directory.GetDirectories(sPath);
14             foreach (string item in strDir1)
15             {
16                 //返回目录的最后一级(名称)
17                 string sDir = item.Substring(item.LastIndexOf(@"\") + 1);
18                 TreeNode tNode1 = tNode.Nodes.Add(sDir);
19                 LoadDirAndFile(item, tNode1.Nodes);     //递归加载
20             }
21
22             string[] strFiles = Directory.GetFiles(sPath, "*.txt");
23             foreach (string item in strFiles)
24             {
25                 TreeNode tNodeFile = treeNodeCollection.Add(Path.GetFileName(item));
26                 tNodeFile.Tag = item;
27             }
28         }
29
30         private void tvList_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
31         {
32             if (e.Node.Tag!=null)
33             {
34                 //文件节点
35                 txtContent.Text = File.ReadAllText(e.Node.Tag.ToString(), Encoding.Default);
36             }
37         }

总结:

1.加载文件夹节点时,要考虑到文件夹下还有可能有子文件夹和子文件,所以要使用递归加载;

2.在实现点击文件节点,要在右边的文本框中查看文本文件全部的内容,就在递归加载文件夹和文件时,为所有的文件节点加了tag属性,后面双击节点时,只要tag属性不为空即为文件节点(读取即可),而为空的则是文件夹节点(不需要处理)。

转载于:https://www.cnblogs.com/chens2865/p/3886086.html

C# IO操作(五)文件的递归加载相关推荐

  1. IO操作Dex文件加密,APK加固项目实战

    APK加固原理分析 1.1 APK文件结构 首先让我们先了解一下一个完整的Android应用程序都由哪些文件组成.解压一个apk包,我们可以看到一下的这些文件及文件夹: 每个文件及文件夹的作用如下表所 ...

  2. 解读年度数据库性能:PostgreSQL的日志文件和数据加载

    墨墨导读:本文主要介绍PostgreSQL的日志文件参数及注意事项,从csv日志中载入数据库.通过灵活的数据加载方式,让SQL在处理很多问题上更加简捷便利. 运行日志参数 1.1 运行日志主要参数 运 ...

  3. drawboard pdf拆分文件_掌握在线PDF拆分技巧,从此打开文件不再处于“加载中”...

    随着生活节奏的加快,我们身边的事物渐渐地处于"加载中",到奶茶店买杯奶茶需要加载,玩个游戏处于"加载中",就连工作时打开一个PDF文件都是"加载中&q ...

  4. oracle ocx加载错误,怎么对.ocx格式的文件进行注册加载?出现0x8002801c错误怎么办?...

    很多用户在安装使用软件时,会要求注册加载一个.ocx格式的控件,否则软件程序就无法运行.有的用户在注册这个控件时还会出现错误,提示对DllRegisterServer调用失败,错误代码为0x80028 ...

  5. GREENPLUM介绍之数据库管理(九)- 使用GPLOAD实现无落地文件的高速加载

    GREENPLUM介绍之数据库管理(九)- 使用GPLOAD实现无落地文件的高速加载     类似于ORACLE SQL*LOADER,gpload是EMC在greenplum中提供的用来进行数据装载 ...

  6. javascript 文件的同步加载与异步加载

    原文:[转载]javascript 文件的同步加载与异步加载 HTML 4.01 的script属性 charset: 可选.指定src引入代码的字符集,大多数浏览器忽略该值. defer: bool ...

  7. 图片在xml文件中直接加载.9文件

    图片在xml文件中直接加载.9文件,可能会因为图片压缩的缘故产生锯齿,如果使用 ImageView imageview = (ImageView) view .findViewById(R.id.in ...

  8. Vue文件内动态加载JS

    Vue文件内动态加载JS let jsUrl = 'https://code.jquery.com/jquery-3.4.1.min.js' // JS地址 let jqueryJs = decode ...

  9. 打开dll文件时模块加载失败,请确保二进制存储在指定的路径中,或者调试它以检查该二进制或相关的.DLL文件是否有问题

    ** 打开dll文件时模块加载失败,请确保二进制存储在指定的路径中,或者调试它以检查该二进制或相关的.DLL文件是否有问题 **打开dll文件时模块加载失败,电脑提示请确保二进制存储在指定的路径中,或 ...

最新文章

  1. HDFS namenode 高可用(HA)搭建指南 QJM方式 ——本质是多个namenode选举master,用paxos实现一致性...
  2. unity3D打包发布Apk详细步骤
  3. java程序运行结果题_2016年关于Java编程与程序运行结果笔试题
  4. 用xargs处理带空格文件名
  5. 模仿QZONE挂图效果
  6. Struts2 工作流程
  7. Idea利用JSP模板设置统一路径(basePath)
  8. 市场需求分析(MRD)模板
  9. plc仿真实训软件_博途STEP7仿真软件与真实PLC的区别
  10. 清洁机器人--屏幕显示LCD方案之MCU SPI 接口驱动ST7789 LCD显示
  11. matlab-gaussmf正态曲线的绘制
  12. 你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行了解更多信息。
  13. vue集成阿里云Aliplayer直播点播组件
  14. 页面相似度检测,对SEO起到什么作用?
  15. 京杭大运河北线疏浚穿越黄河地形UTM平面直角坐标系分析GIS模型建立
  16. 京东数据分析工程师(实习生)笔试
  17. 企业如何实现IoT物联网远程控制
  18. c语言左值中有运算符,C语言左值,运算符的优先级以及结合性探讨
  19. Unity编辑器AssetDatabase函数API用法中文详解-Chinar教程
  20. matlab 解包,Matlab/Simulink-J1939CAN 解包实现方法

热门文章

  1. 畅销榜第7,《魔神英雄传:神龙斗士》制作人复盘研发历程
  2. ORA-01123:无法启动联机备份;未启用介质恢复(错误分析)
  3. 为什么机器人发展了几十年感觉还是没太大进展
  4. 记:第一次更新服务器CUDA和GPU驱动
  5. Redis 注册为 widows 服务
  6. python实现中文图片文字识别--OCR about chinese text--tesseract
  7. H.264 Quantization
  8. Windows Azure 安全最佳实践 - 第 1 部分:深度解析挑战防御对策
  9. ActionBarSherlock ViewPagerIndicator
  10. java:蓝桥杯练习 分解质因数