首页 > 代码库 > C# IO操作(五)文件的递归加载
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属性不为空即为文件节点(读取即可),而为空的则是文件夹节点(不需要处理)。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。