タイトルまま。まー使いたいときにいっつもすぐ出てこないのでメモ。 ググればいっぱい出てくるけども、まとめ的に。

フルパス欲しいだけの時は、静的メンバの方が楽。DirectoryInfoとかFileInfo欲しいときはインスタンス化して使った方が楽。あと、ファイルの操作するときはFileInfoで取っておかないと後で困る。静的メンバ使って操作しても問題ないと思うけど、大量にやるときはインスタンス作った方が早いらしい。試したことは無い。。。

列挙だけならEnumerateの方がレスポンスは早っぽいですね。さすがに。

//using System.IO;
public void fileListSample()
{
    string TopDirectory = @"C:\*****";
    //Directory
    if (Directory.Exists(TopDirectory))
    {
        Console.WriteLine("DirectoryクラスのGetDirectories 戻りはフルパスのString");
        //サブディレクトリを丸ごと
        //カレント直下のみ欲しい場合は「SearchOption.TopDirectoryOnly」
        //⇒でも同じ foreach (string tmpDir in Directory.EnumerateDirectories(TopDirectory, "*", SearchOption.AllDirectories))
        foreach (string tmpDir in Directory.GetDirectories(TopDirectory, "*", SearchOption.AllDirectories))
        {
            Console.WriteLine("{0}", tmpDir);
        }

        Console.WriteLine("DirectoryInfoをインスタンスにしてGetDirectories 戻りはDirectoryInfo");
        DirectoryInfo di = new DirectoryInfo(TopDirectory);
        //サブディレクトリを丸ごと
        //カレント直下のみ欲しい場合は「SearchOption.TopDirectoryOnly」
        //⇒でも同じ foreach (DirectoryInfo tmpDir in di.EnumerateDirectories("*", SearchOption.AllDirectories))
        foreach (DirectoryInfo tmpDir in di.GetDirectories("*", SearchOption.AllDirectories))
        {
            Console.WriteLine("{0}", tmpDir.FullName);
        }
    }
    //File
    if (Directory.Exists(TopDirectory))
    {
        Console.WriteLine("DirectoryクラスのGetFiles 戻りはフルパスのString");
        //サブディレクトリを丸ごと
        //カレント直下のみ欲しい場合は「SearchOption.TopDirectoryOnly」
        //⇒でも同じ foreach (string tmpFile in Directory.EnumerateFiles(TopDirectory, "*", SearchOption.AllDirectories))
        foreach (string tmpFile in Directory.GetFiles(TopDirectory, "*", SearchOption.AllDirectories))
        {
            Console.WriteLine("{0}", tmpFile);
        }

        Console.WriteLine("DirectoryInfoをインスタンスにしてGetFiles 戻りはFileInfo");
        DirectoryInfo di = new DirectoryInfo(TopDirectory);
        //サブディレクトリを丸ごと
        //カレント直下のみ欲しい場合は「SearchOption.TopDirectoryOnly」
        //⇒でも同じ foreach (FileInfo tmpFile in di.EnumerateFiles("*", SearchOption.AllDirectories))
        foreach (FileInfo tmpFile in di.GetFiles("*", SearchOption.AllDirectories))
        {
            Console.WriteLine("{0}", tmpFile.FullName);
        }
    }
}