C#遍历指定目录的递归

    public ArrayList al = new ArrayList();//定义存储文件和文件夹名的数组

    public int aaa = 0;//定义标志位参数,递归时判断该参数,若不为0则非第一次递归

    public void GetAllDirList(string strBaseDir)

   

        DirectoryInfo di = new DirectoryInfo(strBaseDir);

        DirectoryInfo[] diA = di.GetDirectories();

         if(aaa==0)

        {

        FileInfo[] fis2 = di.GetFiles();   //有关目录下的文件 

          for (int i2 = 0; i2 < fis2.Length; i2++)

        {

             al.Add(fis2[i2].FullName);

            //fis2[i2].FullName是根目录中文件的绝对地址,把它记录在ArrayList中

        }

         }

         for (int i = 0; i < diA.Length; i++)

        {

                aaa++;

                al.Add(diA[i].FullName + "\t<目录>");

                //diA[i].FullName是某个子目录的绝对地址,把它记录在ArrayList中

                 DirectoryInfo di1 = new DirectoryInfo(diA[i].FullName);

                DirectoryInfo[] diA1 = di1.GetDirectories();

               FileInfo[] fis1 = di1.GetFiles();   //有关目录下的文件  

                    for (int ii = 0; ii < fis1.Length;ii++ )

                    {

                        al.Add(fis1[ii].FullName);

                        //fis1[ii].FullName是某个子目录中文件的绝对地址,把它记录在ArrayList中

 

                     

                GetAllDirList(diA[i].FullName);

                //注意:递归了。逻辑思维正常的人应该能反应过来

        }

              

     }

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

posted @ 2009-08-18 14:55  oraclejava  阅读(164)  评论(0)    收藏  举报