A-A+

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

2008年05月25日 編程·程序設計 暂无评论 阅读 6,070 views 次

众所周知,获得某一目录下第一级的所有文件和文件夹列表,很容易办到:
DirectoryInfo di=new DirectoryInfo(strBaseDir);//strBaseDir是起始目录,绝对地址
DirectoryInfo[] diA=di.GetDirectories();//获得了所有一级子目录
FileInfo[] fiA=di.GetFiles();//获得了所有起始目录下的文件
要是想获得某一目录下的所有文件和目录(包含所有子目录),那该怎么办呢?目录都是一层套一层的,我们不能预知某个目录的深度,只有获得了父节点,才有可能了解子节点,解决这个问题,只有递归这个概念了。
那么什么是递归呢?请不会C语言的朋友先去看书吧,我这里只简单的说一下我的理解:递归就是一个方法,在这个方法里面,再次调用它本身这个方法,从而描述了某一事物运作的深度…… - - 不废话了,看代码吧:

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

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

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

 

原文来源:http://www.xrss.cn/Dev/DotNet/200842519208.Html

给我留言

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。

Copyright © 寂寞部屋 保留所有权利.   Theme  Ality

用户登录