タイトルまま。まー使いたいときにいっつもすぐ出てこないのでメモ。 ググればいっぱい出てくるけども、まとめ的に。
フルパス欲しいだけの時は、静的メンバの方が楽。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); } } }