
Directory.GetFiles での不正アクセス例外の克服
Directory.GetFiles() を使用してディレクトリ ツリー内のファイルを再帰的に検索すると、プログラムが十分なアクセス許可なしでフォルダーにアクセスしようとすると、UnauthorizedAccessException が発生する可能性があります。この例外により、操作が途中で中止されます。
この問題を回避するには、各ディレクトリを個別に調査する、より制御されたアプローチを採用することをお勧めします。以下のコードは、この手法を示しています。
private static void AddFiles(string path, IList<string> files)
{
try
{
Directory.GetFiles(path)
.ToList()
.ForEach(file => files.Add(file));
Directory.GetDirectories(path)
.ToList()
.ForEach(dir => AddFiles(dir, files));
}
catch (UnauthorizedAccessException ex)
{
// Handle inaccessible directory (e.g., move on to the next one)
}
}このアプローチでは、AddFiles() はパス内のすべてのファイルとサブディレクトリを反復処理します。アクセスできないディレクトリが見つかった場合は、それをスキップして残りのディレクトリを続行します。そうすることで、プログラムは認証の問題により突然終了することなくファイル検索を続行できます。
以上がDirectory.GetFiles() を使用するときに UnauthorizedAccessException を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。