c#
でファイルロックを確認するときに例外を回避しますC#でファイルアクセスの競合を管理するのは難しい場合があります。 この記事では、例外処理に依存せずにファイルの可用性を確認するためのプロアクティブな方法を紹介し、より堅牢なソリューションを提供します。 現在書かれているファイルにアクセスしようとすると問題が発生し、「使用中のファイル」エラーにつながります。
FileAccess.Read
を使用したプロアクティブなアプローチ
を使用してファイルの可用性を積極的に検証できます。この改訂されたコードスニペットは、より効率的で信頼性の高い方法を示しています:FileAccess.Read
<code class="language-csharp">protected virtual bool IsFileLocked(FileInfo file) { using (FileStream stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None)) { stream.Close(); return false; // File is accessible } catch (IOException) { // File is locked or unavailable return true; } }</code>
説明
コードは、排他的アクセス()を使用して、読み取り専用モード(FileAccess.Read
)でファイルを開くことを試みます。別のプロセスがファイルにロックを保持している場合(たとえば、書き込み)、FileShare.None
メソッドが失敗し、Open
をスローします。 IOException
ブロックはこれを処理し、ファイルがロックされていることを示すためにtry-catch
を返します。 ファイルの開くことが成功すると、ファイルが利用可能であり、true
が返されます。 このアプローチは、パフォーマンスのオーバーヘッドと例外処理のみに依存することに関連する潜在的な問題を回避します。
以上が例外を使用せずにC#でファイルロックをプロアクティブに検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。