当前位置:首页 > C#

C#递归方法遍历目录及子目录

happyfhb14年前 (2012-12-29)C#1766
摘要: 众所周知,获得某一目录下第一级的所有文件和文件夹列表,很容易办到:DirectoryInfo di=new DirectoryInfo(strBaseDir);//strBaseDir是起始目录,绝对地址DirectoryInfo[] diA=di.GetD…

 

众所周知,获得某一目录下第一级的所有文件和文件夹列表,很容易办到:
DirectoryInfo di=new DirectoryInfo(strBaseDir);//strBaseDir是起始目录,绝对地址
DirectoryInfo[] diA=di.GetDirectories();//获得了所有一级子目录
FileInfo[] fiA=di.GetFiles();//获得了所有起始目录下的文件
要是想获得某一目录下的所有文件和目录(包含所有子目录),那该怎么办呢?目录都是一层套一层的,我们不能预知某个目录的深度,只有获得了父节点,才有可能了解子节点,解决这个问题,只有递归这个概念了。

那么什么是递归呢?请不会C语言的朋友先去看书吧,我这里只简单的说一下我的理解:递归就是一个方法,在这个方法里面,再次调用它本身这个方法,从而描述了某一事物运作的深度…… - - 不废话了,看代码吧:

public ArrayList al=new ArrayList(); 
   
//我把ArrayList当成动态数组用,非常好用 
   
public void GetAllDirList(string strBaseDir) 
{ 
  DirectoryInfo di=new DirectoryInfo(strBaseDir); 
  DirectoryInfo[] diA=di.GetDirectories(); 
  for(int i=0;i<diA.Length;i++) 
  { 
   al.Add(diA[i].FullName); 
  //diA[i].FullName是某个子目录的绝对地址,把它记录在ArrayList中 
   GetAllDirList(diA[i].FullName); 
  //注意:递归了。逻辑思维正常的人应该能反应过来 
  } 
}

最后,如何把所有目录信息从ArrayList中取出来呢?如下:

 

for(int i=0;i<al.Count;i++) 
 { 
    textBox1.AppendText(al[i].ToString()+" "); 
   //textBox1是容器,拷贝我的代码,注意要换一个你自己的容器 
 }

 

扫描二维码推送至手机访问。

版权声明:本文由海海日记-冯海滨博客发布,如需转载请注明出处。

本文链接:http://www.fenghaibin.com/?id=1025

“C#递归方法遍历目录及子目录” 的相关文章

c#无返回值函数如何调用

 无返回值函数如何调用 事例 定义一个不需要返回值的函数 none()         static void none()//定义一个不需要返回值的函数        {&nbs…

学习心得 数据库连接类的书写规范

一般的规范都是建立3个类文件类1:字段(属性)model类2:方法(函数) dal类3:辅助或者就是 本来可以直接通过dal调用的方法 我在重写一遍 起中转作用 可以使程序更加清晰  bll…

c#中如何判断用户输入的字符全部为数字的方法-经典

             string num = textBox1.Text; //从文本框获取用户输入的值     …

C#延时方法片段

 label4.Text = "输入非数字字符";                //延时1秒  &…

C# windows服务程序中的Timer控件的添加方法

C# windows服务程序中的Timer控件的添加方法

开"工具箱"---右键---"选择项"---找到Timer控件,看好了,这个Timer控件的是system.Timer下的. 可不是System.Windows.Form.然后添加. …

C#  Windows服务 调试方法

C# Windows服务 调试方法

1. 首先在你的服务源代码中添加一个定时器。2. 将定时器设置为可用状态 并且在定时器中加代码 并设置定时器的定时时间 。3. 编译和安装好服务。4. 在定时器代码里面下断点。 5. 在服务控制台管理器中启动服务。以下操作必须在定时器设置的秒内 秒内完成,否则无法进入调试状态。6. VS2…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。