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.EnumerateDirectories、最初にすべてのディレクトリ名を配列に入れる代わりに、ディレクトリ名を見つけたときにそれを生成する which を代わりに使用します。

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