首页 > 代码库 > 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属性不为空即为文件节点(读取即可),而为空的则是文件夹节点(不需要处理)。