Directory.GetFiles がディレクトリ
を走査するときに発生する UnauthorizedAccessException 例外を適切に処理します。ファイルおよびディレクトリの操作を実行するとき、Directory.GetFiles
メソッドを使用すると、UnauthorizedAccessException
例外が発生する場合があります。この例外は、ユーザーが適切な権限を持たないディレクトリにメソッドがアクセスしようとしたときに発生します。
この問題を解決するには、ディレクトリ ツリー全体を走査するのではなく、ディレクトリを 1 つずつ調査することをお勧めします。このアプローチにより、操作をより細かく制御できるようになります。次のコードは、改善されたアプローチを示しています。
<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 ex) { // 忽略此目录的访问权限错误,继续处理其他目录 } }</code>
このメソッドでは、UnauthorizedAccessException
がキャプチャされて正常に処理されるため、プログラムは実行を継続し、場合によっては他のアクセス可能なファイルを検出できるようになります。反復はディレクトリ階層全体を続行し、それ自体を再帰的に呼び出してサブディレクトリを探索します。
この手法を使用すると、アクセス拒否エラーによる Directory.GetFiles
メソッドの終了を回避し、ディレクトリ トラバーサル プロセスの制御を維持できます。 このメソッドでは、foreach
の代わりに ToList().ForEach()
ループを使用するため、より読みやすく効率的になります。
以上がDirectory.GetFiles を使用してディレクトリを走査するときに UnauthorizedAccessException を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。