
堅牢なファイル取得: Directory.GetFiles での UnauthorizedAccessException の処理
ファイル システムの操作では、アクセス許可の問題が頻繁に発生し、UnauthorizedAccessException を使用すると Directory.GetFiles が発生します。通常、この例外は、アクセスできないディレクトリが 1 つ発生した場合にプロセス全体を停止させます。 より堅牢なソリューションには、ディレクトリ アクセスを個別にチェックすることが含まれます。
この改善されたアプローチ (以下で詳しく説明します) は、各ディレクトリを反復処理して、アクセス制限を適切に処理できるようにします。
選択的ファイル取得ソリューション
AddFiles メソッドはディレクトリを再帰的に処理します。ラムダ式を使用してファイル パスをリストに追加し、アクセスが制限されているディレクトリを無視します。
<code class="language-csharp">private static void AddFiles(string path, IList<string> files)
{
try
{
foreach (string file in Directory.GetFiles(path))
{
files.Add(file);
}
foreach (string subdirectory in Directory.GetDirectories(path))
{
AddFiles(subdirectory, files);
}
}
catch (UnauthorizedAccessException)
{
// Ignore access denied errors and continue processing other directories.
}
}</code>この改訂されたメソッドは、UnauthorizedAccessException ブロック内の try-catch 例外を効率的に処理します。 プログラムは実行を継続し、クラッシュすることなくアクセス可能なディレクトリからファイルを収集します。これにより、制御が向上し、アクセス制限による早期終了が防止されます。 foreach ループを使用すると、元の ToList().ForEach() アプローチと比較して可読性が向上します。
以上がDirectory.GetFiles を使用するときに UnauthorizedAccessException を適切に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。