我用String[] files=Directory.GetFiles(sPath,"*.txt")获取指定目录下的所有文本文件*.txt,
问题是一次中能针对一个目录;有没有办法可以一次获取指定目录中所有子目录下的文件,就跟遍历一样列
出来,或者说直接获取E:\中所有子目录的文本文件*.txt;期待各位高手赐教,谢谢!

解决方案 »

  1.   

    用递归,如果对了,请帖子加分......using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;namespace 递归遍历文件夹
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Please input the directory."+"("+" Such as F:"+"\\"+"text"+")");
                string dir = Console.ReadLine().ToString();
                Console.WriteLine("深度遍历文件夹");
                listDir(dir);
                Console.WriteLine("\n列出了所有子文件夹和目录,没有说明空文件夹");
                Console.ReadLine();
            }
            private static void listDir(string dirPath)
            {
                if (!Directory.Exists(dirPath))//判断给定的路径是否存在
                {
                    Console.WriteLine("根本没这个文件夹!");
                    return;
                }
                //定义一个DirectoryInfo对象
                DirectoryInfo di = new DirectoryInfo(dirPath);            //通过GetFiles方法,获取di目录中的所有文件名称
                foreach (FileInfo fi in di.GetFiles("*.txt"))
                {
                    Console.WriteLine(fi.FullName);
                }
                DirectoryInfo[] dis = di.GetDirectories();
                if (dis.Length > 0)
                {
                    for (int i = 0; i < dis.Length; i++)
                    {
                        listDir(dis[i].FullName);
                    }
                }        }
        }
    }
      

  2.   

    你好:sageking2 ,问题是没有把它的子目录下的所有*.txt文件列出,而是把它的子目录列出来啊
    那要是它的子目录下还有好多路径的话,去回所有目录下的所有*.txt,岂不很麻烦,请赐教,将不胜感激!
                 DirectoryInfo[] dis = di.GetDirectories();
                if (dis.Length > 0)
                {
                    for (int i = 0; i < dis.Length; i++)
                    {
                        listDir(dis[i].FullName);
                    }
                }