Frage

Ich mag eine Datei / Löschen schreiben, aber manchmal bekomme ich einen Absturz, wenn die Datei von einem anderen Programm verwendet wird. Wie kann ich überprüfen, um zu sehen, ob die Datei von einem anderen Prozess geöffnet wird, oder ich kann es zum Schreiben öffnen?

War es hilfreich?

Lösung

Das Problem ist, dass Sie zwischen dem Zeitpunkt, zu überprüfen, ob Sie exklusiven Zugriff bekommen können und die Datei öffnet, wird etwas anderen exklusiven Zugriff auf die Datei, und Sie erhalten die Ausnahme trotzdem.

Der einzige narrensicher Weg, um zu sehen, ob Sie eine exklusive Sperre für eine Datei erhalten können, ist eine exklusive Sperre auf der Datei, um zu versuchen und zu erhalten, wenn Sie es haben Sie es.

Wenn nicht, Sie fangen die Ausnahme, und entweder

  • Gehen Sie etwas anderes tun
  • Warten Sie einen Moment und versuchen Sie es erneut

Es ist eine Situation des Lebens, wo es besser ist, um Vergebung zu bitten als um Erlaubnis:)

Andere Tipps

Es gibt einen neuen Weg, um den Ursprung der Dateisperrung für Vista und hier oben zu bekommen: http: // www. remkoweijnen.nl/blog/2011/01/03/cannot-access-files-but-need-the-origin/

Usermode: Der beste Weg zu einer gesperrten Datei zu schreiben ist, den Benutzer zu fragen, es in dem anderen Prozess zu schließen. Im Batch-Prozesse sollten Sie eine solche Datei ignorieren und das Problem protokollieren. Die Bereitstellung den Namen des anderen Prozesses ist ein sehr guter Weg, um eine Lösung für den Benutzer zu finden.

Nicht sicher, in welcher Programmiersprache Sie möchten überprüfen, ob Sie in eine Datei schreiben kann. In Java, java.io .File.canWrite () kann die Arbeit für Sie tun.

Allgemein:

In UNIX-artigen Betriebssystem, können Sie die lsof Befehl.

Wenn Sie sehen möchten, welches Programm einen Handle auf Ihre Datei enthält, verwenden Sie die Process Monitor (Download von Microsoft).

Dieses Werkzeug verfügt über eine Befehlszeilenschnittstelle, so dass Sie Ihre Sprache der Scripting-Schnittstelle (zB java.lang.Process) verwenden könnten das Tool und zeigen eine nützliche Fehlermeldung ausgeführt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top