アクセス制限により Directory.GetFiles メソッドによって例外が発生しました
ネットワーク ファイル システムまたは制御された環境のファイル システムにアクセスすると、特定のフォルダーへのアクセスが制限される場合があります。これにより、Directory.GetFiles などのメソッドが例外をスローし、プログラムの実行が中断されます。
問題分析
Directory.GetFiles メソッドがアクセスできないディレクトリに遭遇すると、UnauthorizedAccessException 例外をスローします。残念ながら、この例外をキャッチする前にメソッドは失敗しており、回復できません。
解決策: ディレクトリを 1 つずつ検出します
この問題を解決するには、ディレクトリ ツリー全体を再帰的に検索するのではなく、一度に 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>
の使用を回避し、より明確で読みやすい ToList().ForEach()
ループを使用することで、コードの保守性が向上しています。 foreach
以上がDirectory.GetFiles を使用するときに UnauthorizedAccessException を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。