Dies ist vielleicht ähnlich wie in früheren Posts, aber ich möchte etwas über die Verwendung von Sperren in einem Netzwerk, anstatt lokal zu sein. Ich möchte eine Datei an einen freigegebenen Speicherort schreiben, so dass es in einem Netzwerk (sicherlich ein Windows-Netzwerk, vielleicht Mac) gehen kann. Ich möchte verhindern, dass andere Leute einen Teil dieser Datei lesen, während sie geschrieben wird. Dies wird kein sehr gleichzeitiger Prozess sein, und die Dateien werden in der Regel weniger als 10 MB sein.Java-Datei in einem Netzwerk sperren
Ich habe die FileLock
Dokumentation und File
Dokumentation gelesen und bin etwas verwirrt, was ist sicher und was nicht. Ich möchte die gesamte Datei statt Teile davon sperren.
Kann ich FileChannel.tryLock()
verwenden, und es ist sicher in einem Netzwerk, oder hängt es von der Art des Netzwerks ab? Funktioniert es in einem Standard-Windows-Netzwerk (wenn es so etwas gibt).
Wenn dies nicht funktioniert, ist das Beste, um eine Null-Byte-Datei oder ein Verzeichnis als Sperrdatei zu erstellen, und dann die Hauptdatei ausschreiben. Warum heißt das in der Dokumentation File.createNewFile()
, dass dies nicht zum Sperren von Dateien verwendet wird? Ich schätze, dass dies den Rennbedingungen unterliegt und nicht ideal ist.