2

我在控制台应用程序中列出所有目录,但它需要永远,超过 10 分钟以上(假设在这里,它可能需要超过 10 分钟),我知道有很多目录,但是 10 分钟以上太长了开始?

class Program
    {
        static void Main(string[] args)
        {
            DirSearch(@"c:\");

            Console.ReadKey();
        }

        static void DirSearch(string sDir)
        {
            try
            {
                foreach (string d in Directory.GetDirectories(sDir))
                {
                    Console.WriteLine(d);
                    DirSearch(d);
                }
            }
            catch (System.Exception excpt)
            {
                Console.WriteLine(excpt.Message);
            }
        }
    }
4

1 回答 1

10

是的 - 不要手动使其递归。这是内置的,您可以使用SearchOption.AllDirectories它在搜索中包含所有子目录:

foreach (string d in Directory.GetDirectories(sDir, "*.*", SearchOption.AllDirectories))
{
    Console.WriteLine(d);
}

或者使用Directory.EnumerateDirectorieswhich 在找到目录名称时生成目录名称,而不是先将所有目录名称放入数组中:

foreach (string d in Directory.EnumerateDirectories(sDir, "*.*", SearchOption.AllDirectories))
{
    Console.WriteLine(d);
}
于 2012-04-27T15:00:14.300 回答