Directory.GetFiles() でのファイル アクセス例外の処理
Directory.GetFiles()
メソッドを使用すると、指定されたディレクトリ パス内の特定のフォルダーまたはファイルにアクセスできなくなり、例外が発生し、ファイル一覧表示プロセスが中断される場合があります。この制限を克服し、保護されたアイテムやアクセスできないアイテムを無視しながらアクセス可能なファイルのリストを継続するには、手動の再帰的アプローチをお勧めします。
Directory.GetFiles()
メソッドは、AllDirectories
パラメーターを使用した再帰をネイティブにサポートします。ただし、特定のサブディレクトリへのアクセスが拒否された場合、このメソッドは信頼性が低くなり、プロセスが突然終了する可能性があります。この問題を解決するには、カスタムの再帰的アプローチが必要です。
提供されたコード スニペットは、指定されたディレクトリ内のファイルを再帰的にリストする際に、アクセス例外を適切に処理する方法を示しています。カスタムの再帰検索を実行する新しいメソッド ApplyAllFiles()
が導入されています。
ApplyAllFiles()
では、コードは現在のディレクトリ内の各ファイルを反復処理し、提供された fileAction
デリゲートを呼び出してファイルを処理します。次に、現在のディレクトリ内のサブディレクトリを一覧表示し、同じ ApplyAllFiles()
メソッドを各サブディレクトリに適用しようとします。
サブディレクトリへのアクセス中に例外が発生した場合、コードはその例外を黙って飲み込み、プロセスが中断することなくアクセス可能なファイルのリストを続行することを保証します。
このアプローチを採用することで、開発者は、アクセスできないフォルダーやファイルを無視しながら、ディレクトリ内のファイルを効率的に一覧表示できます。これにより、特にサブディレクトリごとに異なるアクセス権がある場合に、より強力なファイル リスト操作が可能になります。
以上がC#のアクセス例外を無視しながら、ファイルを再帰的にリストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。