ホームページ > バックエンド開発 > C++ > Directory.GetFiles を使用するときに UnauthorizedAccessException を適切に処理するにはどうすればよいですか?

Directory.GetFiles を使用するときに UnauthorizedAccessException を適切に処理するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-07 15:11:45
オリジナル
509 人が閲覧しました

How Can I Gracefully Handle UnauthorizedAccessException When Using Directory.GetFiles?

堅牢なファイル取得: 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート