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

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

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

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

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

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

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

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

源代码,点击下载