LoginSignup
10
11

More than 5 years have passed since last update.

ファイルやフォルダを列挙する

Posted at

Problem

System.IO.Directory.GetFiles, GetDirectoriesは特に大量のファイルがあったとき制御が戻らなくて困る。
EnumerateFiles, EnumerateDirectoriesと一緒にEnumerateFileSystemEntriesがあったので,これを使ってみたかった。

Solution

.NET 4.0以降で使えます。

EnumerateFs.cs
var fsEntries = Directory.EnumerateFileSystemEntries(path, "*.*", SearchOption.AllDirectories);

ReturnはIEnumerable<string>です。結果をフィルターすればディレクトリのみ,ファイルのみ,指定プレフィックスのファイルのみなど取得できます。

ディレクトリだけ抽出
var dirs = fsEntries.Where(path => File.GetAttributes(path).HasFlag(FileAttributes.Directory));

foreach, Parallel.ForEachなど夢が広がる。
なにより一時リストが生成されないのが嬉しい。

Conclusion

C#ってすばらしい(偏見)。

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11