Sperren und entsperren von Dateien mit der java-API
Einer unserer Kunden nutzt einige neue Sicherheits-software, die sperrt manchmal einige .class-Dateien, die unsere software erstellt. Dies bewirkt, dass einige böse Probleme für Sie, wenn dies geschieht, und ich bin versucht, Forschung umgehen, könnten wir hinzufügen, um unsere Fehler handling, um dieses problem zu beheben, wenn es kommt. Ich Frage mich, gibt es irgendwelche Aufrufe in der java-api, die verwendet werden können, um zu erkennen, ob eine Datei gesperrt ist, und wenn es ist, es zu entsperren.
- Was meinst du mit "sperren einer Datei"? Meinst du, die software ist mit dem .die class-Dateien, so dass Sie nicht geändert werden kann? Oder meinst du Dinge wie Herde(2) ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bevor Sie versuchen, eine Datei schreiben, können Sie überprüfen, ob die Datei schreibbar ist, die von Ihrer java-Anwendung mit Datei.canWrite(). Allerdings, könnten Sie noch laufen in ein Problem, wenn die 3rd-party-app sperrt die Datei, die in zwischen Ihre Datei.canWrite() überprüfen und wenn Ihre Anwendung tatsächlich zu schreiben versucht. Aus diesem Grund würde ich code Ihrer Anwendung, um Sie einfach gehen Sie voran und versuchen, in die Datei schreiben und fangen, was auch immer Ausnahme wird geworfen, wenn die Datei gesperrt ist. Ich glaube nicht, dass es eine native Java-Weg, um eine Datei freizugeben, wurde durch eine andere Anwendung gesperrt. Sie konnte exec eine shell-Befehl als privilegierter Benutzer zu zwingen, die Dinge zusammen, aber das scheint mir unelegant.
Datei.canWrite() hat das Rennen der Bedingung, dass Asaph erwähnt. Sie könnten versuchen, FileChannel.lock() und erhalten Sie einen exklusiven lock auf die Datei. Solange die .Klasse ist auf Ihre lokale Festplatte, das sollte gut funktionieren (das sperren von Dateien kann problematisch sein, die auf Netzwerk-Festplatten).
Alternativ, je nachdem, wie die .Klasse name ist entdeckt, Sie konnte erstellen Sie einen neuen Namen für Ihre .Klasse jeder Zeit; dann, wenn die anti-virus-software-sperren Sie Ihre erste Klasse, können Sie immer noch die neue.