Deterministische Dateisperrung Check in C#
c# Entwickler begegnen häufig auf die Fehler "Datei, die durch einen anderen Prozess verwendet werden" beim Versuch, auf eine Datei zuzugreifen, bevor sie gespeichert wurde. Während die Ausnahmebehandlung Standardpraxis ist, ist ein vorhersehbarerer Ansatz für bestimmte Anwendungen wünschenswert.
Dies kann mit FileInfo.Open
mit FileAccess.Read
und FileShare.None
erreicht werden. Eine erfolgreiche Dateiöffnung (ohne Ausnahmen) gibt an, dass die Datei verfügbar ist. Umgekehrt bedeutet ein IOException
ein Schloss.
Hier ist eine verbesserte Methode:
<code class="language-csharp">protected virtual bool IsFileLocked(FileInfo file) { // Attempt to open the file for reading with exclusive access try { using (FileStream stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None)) { // Successful opening; file is not locked return false; } } catch (IOException) { // File is locked return true; } }</code>
Diese Methode bietet einen deterministischen Ansatz zur Erkennung von Dateisperrungen und vermeidet das Vertrauen in Ausnahmen. Es ist jedoch wichtig, dass sich dies nur zuverlässig für Dateien nicht zuverlässig beachtet FileAccess.ReadWrite
mit Schreibzugriff geöffnet wird. Der Versuch, FileShare.None
mit
Das obige ist der detaillierte Inhalt vonKann die Dateisperrung in C# ohne Ausnahmen überprüft werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!