C# IO操作(五)文件的递归加载
本篇是一个案例,其核心通过代码展示代码中的递归这个用法,程序的界面如下:
当点击“加载”按钮时,根据路径中的地址,加载该文件夹下所有的子文件夹和子文件,代码如下:
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操作(五)文件的递归加载相关推荐
- IO操作Dex文件加密,APK加固项目实战
APK加固原理分析 1.1 APK文件结构 首先让我们先了解一下一个完整的Android应用程序都由哪些文件组成.解压一个apk包,我们可以看到一下的这些文件及文件夹: 每个文件及文件夹的作用如下表所 ...
- 解读年度数据库性能:PostgreSQL的日志文件和数据加载
墨墨导读:本文主要介绍PostgreSQL的日志文件参数及注意事项,从csv日志中载入数据库.通过灵活的数据加载方式,让SQL在处理很多问题上更加简捷便利. 运行日志参数 1.1 运行日志主要参数 运 ...
- drawboard pdf拆分文件_掌握在线PDF拆分技巧,从此打开文件不再处于“加载中”...
随着生活节奏的加快,我们身边的事物渐渐地处于"加载中",到奶茶店买杯奶茶需要加载,玩个游戏处于"加载中",就连工作时打开一个PDF文件都是"加载中&q ...
- oracle ocx加载错误,怎么对.ocx格式的文件进行注册加载?出现0x8002801c错误怎么办?...
很多用户在安装使用软件时,会要求注册加载一个.ocx格式的控件,否则软件程序就无法运行.有的用户在注册这个控件时还会出现错误,提示对DllRegisterServer调用失败,错误代码为0x80028 ...
- GREENPLUM介绍之数据库管理(九)- 使用GPLOAD实现无落地文件的高速加载
GREENPLUM介绍之数据库管理(九)- 使用GPLOAD实现无落地文件的高速加载 类似于ORACLE SQL*LOADER,gpload是EMC在greenplum中提供的用来进行数据装载 ...
- javascript 文件的同步加载与异步加载
原文:[转载]javascript 文件的同步加载与异步加载 HTML 4.01 的script属性 charset: 可选.指定src引入代码的字符集,大多数浏览器忽略该值. defer: bool ...
- 图片在xml文件中直接加载.9文件
图片在xml文件中直接加载.9文件,可能会因为图片压缩的缘故产生锯齿,如果使用 ImageView imageview = (ImageView) view .findViewById(R.id.in ...
- Vue文件内动态加载JS
Vue文件内动态加载JS let jsUrl = 'https://code.jquery.com/jquery-3.4.1.min.js' // JS地址 let jqueryJs = decode ...
- 打开dll文件时模块加载失败,请确保二进制存储在指定的路径中,或者调试它以检查该二进制或相关的.DLL文件是否有问题
** 打开dll文件时模块加载失败,请确保二进制存储在指定的路径中,或者调试它以检查该二进制或相关的.DLL文件是否有问题 **打开dll文件时模块加载失败,电脑提示请确保二进制存储在指定的路径中,或 ...
最新文章
- HDFS namenode 高可用(HA)搭建指南 QJM方式 ——本质是多个namenode选举master,用paxos实现一致性...
- unity3D打包发布Apk详细步骤
- java程序运行结果题_2016年关于Java编程与程序运行结果笔试题
- 用xargs处理带空格文件名
- 模仿QZONE挂图效果
- Struts2 工作流程
- Idea利用JSP模板设置统一路径(basePath)
- 市场需求分析(MRD)模板
- plc仿真实训软件_博途STEP7仿真软件与真实PLC的区别
- 清洁机器人--屏幕显示LCD方案之MCU SPI 接口驱动ST7789 LCD显示
- matlab-gaussmf正态曲线的绘制
- 你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行了解更多信息。
- vue集成阿里云Aliplayer直播点播组件
- 页面相似度检测,对SEO起到什么作用?
- 京杭大运河北线疏浚穿越黄河地形UTM平面直角坐标系分析GIS模型建立
- 京东数据分析工程师(实习生)笔试
- 企业如何实现IoT物联网远程控制
- c语言左值中有运算符,C语言左值,运算符的优先级以及结合性探讨
- Unity编辑器AssetDatabase函数API用法中文详解-Chinar教程
- matlab 解包,Matlab/Simulink-J1939CAN 解包实现方法
热门文章
- 畅销榜第7,《魔神英雄传:神龙斗士》制作人复盘研发历程
- ORA-01123:无法启动联机备份;未启用介质恢复(错误分析)
- 为什么机器人发展了几十年感觉还是没太大进展
- 记:第一次更新服务器CUDA和GPU驱动
- Redis 注册为 widows 服务
- python实现中文图片文字识别--OCR about chinese text--tesseract
- H.264 Quantization
- Windows Azure 安全最佳实践 - 第 1 部分:深度解析挑战防御对策
- ActionBarSherlock ViewPagerIndicator
- java:蓝桥杯练习 分解质因数