C#遍历指定目录的递归(完美改进版+完整程序源码)

昨天写了一下遍历目录树的思路和核心代码,今天将其实践化了一下,做了个实际的例子,遍历指定目录下的所有文件和文件夹,并将其按层次归类显示,对文件夹有标志提示,将文件夹与文件区分了出来。

下面是改进版的核心方法代码:

 1 None.gif public  ArrayList al  =   new  ArrayList(); // 定义存储文件和文件夹名的数组
 2 None.gif      public   int  aaa  =   0 ; // 定义标志位参数,递归时判断该参数,若不为0则非第一次递归
 3 None.gif      public   void  GetAllDirList( string  strBaseDir)
 4 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 5InBlock.gif        DirectoryInfo di = new DirectoryInfo(strBaseDir);
 6InBlock.gif        DirectoryInfo[] diA = di.GetDirectories();
 7InBlock.gif        if(aaa==0)
 8ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 9InBlock.gif        FileInfo[] fis2 = di.GetFiles();   //有关目录下的文件   
10InBlock.gif        for (int i2 = 0; i2 < fis2.Length; i2++)
11ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
12InBlock.gif            al.Add(fis2[i2].FullName);
13InBlock.gif            //fis2[i2].FullName是根目录中文件的绝对地址,把它记录在ArrayList中
14ExpandedSubBlockEnd.gif        }

15ExpandedSubBlockEnd.gif        }

16InBlock.gif        for (int i = 0; i < diA.Length; i++)
17ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
18InBlock.gif                aaa++;
19InBlock.gif                al.Add(diA[i].FullName + "\t<目录>");
20InBlock.gif                //diA[i].FullName是某个子目录的绝对地址,把它记录在ArrayList中
21InBlock.gif                DirectoryInfo di1 = new DirectoryInfo(diA[i].FullName);
22InBlock.gif                DirectoryInfo[] diA1 = di1.GetDirectories();
23InBlock.gif                FileInfo[] fis1 = di1.GetFiles();   //有关目录下的文件   
24InBlock.gif                    for (int ii = 0; ii < fis1.Length;ii++ )
25ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
26InBlock.gif                        al.Add(fis1[ii].FullName);
27InBlock.gif                        //fis1[ii].FullName是某个子目录中文件的绝对地址,把它记录在ArrayList中
28InBlock.gif
29ExpandedSubBlockEnd.gif                    }
   
30InBlock.gif                GetAllDirList(diA[i].FullName);
31InBlock.gif                //注意:递归了。逻辑思维正常的人应该能反应过来
32ExpandedSubBlockEnd.gif        }

33InBlock.gif                
34ExpandedBlockEnd.gif    }

具体原理每行关键核心代码后都有注释,大家应该可以看明白的
下面附上这个方法的使用范例(例子中有两个方法,第一个按钮只遍历指定目录下一级层次;第二个按钮是调用上述方法,遍历了指定目录下的所有层次文件夹和文件)

源代码,点击下载

转载于:https://www.cnblogs.com/cnmawei/archive/2007/06/13/781547.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值