.NET 4.0には、列挙を介してストリーミング方式でディレクトリ内のファイルを取得するための優れた新しい方法があります。
ここでの問題は、すべてのファイルを列挙したい場合、どのファイルまたはフォルダーがアクセス保護されているかを事前に知らず、UnauthorizedAccessExceptionをスローする可能性があることです。
再現するには、次のフラグメントを実行するだけです。
foreach (var file in Directory.EnumerateFiles(@"c:\", "*", SearchOption.AllDirectories))
{
// whatever
}
この.NETメソッドが存在する前は、文字列配列を返すメソッドに再帰的イテレータを実装することで、ほぼ同じ効果を達成することができました。しかし、新しい.NETメソッドほど怠惰ではありません。
じゃあ何をすればいいの?このメソッドを使用する場合、UnauthorizedAccessExceptionを抑制できますか、それとも事実ですか?
メソッドには、例外を処理するアクションを受け入れるオーバーロードが必要であるように思われます。