Das Problem ist, dass zwischen dem Zeitpunkt, an dem Sie prüfen, ob Sie exklusiven Zugriff erhalten und die Datei öffnen können, etwas anderes exklusiven Zugriff auf die Datei erhält und Sie trotzdem die Ausnahme erhalten.
Der einzige narrensichere Weg, um zu sehen, ob Sie eine exklusive Sperre für eine Datei erhalten können, besteht darin, eine exklusive Sperre für die Datei zu erhalten, wenn Sie sie erhalten.
Wenn nicht, fangen Sie die Ausnahme und entweder
Es ist eine der Situationen des Lebens, wo es besser ist, um Vergebung zu bitten als um Erlaubnis:)
Es gibt eine neue Möglichkeit, den Ursprung der Dateisperrung für Vista und höher zu ermitteln: Ссылка
Benutzermodus: Die beste Möglichkeit, in eine gesperrte Datei zu schreiben, besteht darin, den Benutzer zu bitten, sie in dem anderen Prozess zu schließen. In Batch-Prozessen sollten Sie eine solche Datei ignorieren und das Problem protokollieren. Die Angabe des anderen Prozesses ist eine sehr gute Möglichkeit, eine Lösung für den Benutzer zu finden.
Sie sind sich nicht sicher, in welcher Programmiersprache Sie prüfen möchten, ob Sie in eine Datei schreiben können. In Java java.io.File.canWrite () kann die Arbeit für Sie erledigen.
Allgemein:
Unter UNIX-ähnlichen Betriebssystemen können Sie den Befehl lsof verwenden.
Wenn Sie sehen möchten, welches Programm ein Handle für Ihre Datei enthält, verwenden Sie den Prozessmonitor (von MicroSoft herunterladen).
Dieses Tool verfügt über eine Befehlszeilenschnittstelle, sodass Sie die Skriptschnittstelle Ihrer Sprache verwenden können (z. B. java.lang.Process
), um das Tool auszuführen und eine sinnvolle Fehlermeldung anzuzeigen.