1. ホーム
  2. c#

[解決済み] C#でディレクトリ内の全ファイルを再帰的にリストアップする方法は?

2022-03-14 15:31:13

質問

C#でディレクトリと子ディレクトリにあるすべてのファイルを再帰的にリストアップするにはどうすればよいですか?

どのように解決するのですか?

この記事 は、必要なものをすべて網羅しています。ただし、ファイルを検索して名前を比較するのではなく、ただ名前をプリントアウトするだけです。

このように修正することができます。

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

Barlopによって追加されました。

GONealeは、上記がカレントディレクトリのファイルをリストアップしていないことに言及し、ディレクトリを取得する部分の外にファイルをリストアップする部分を置くことを提案しています。 以下のようにすると、それが可能になります。また、Writelineの行をアンコメントすることで、再帰のどこにいるのかを追跡し、再帰がどのように動作しているかを示すのに役立つかもしれません。

            DirSearch_ex3("c:\\aaa");
            static void DirSearch_ex3(string sDir)
            {
                //Console.WriteLine("DirSearch..(" + sDir + ")");
                try
                {
                    Console.WriteLine(sDir);

                    foreach (string f in Directory.GetFiles(sDir))
                    {
                        Console.WriteLine(f);
                    }

                    foreach (string d in Directory.GetDirectories(sDir))
                    {
                        DirSearch_ex3(d);
                    }
                }
                catch (System.Exception excpt)
                {
                    Console.WriteLine(excpt.Message);
                }
            }