Verzeichnis sperren

Status
Nicht offen für weitere Antworten.

roddy

Aktives Mitglied
Ich bin mir jetzt nicht ganz sicher, ob die Frage nicht doch in JAVA-Allgemein gehört hätte, aber im Prinzip gehts eher um Algorithmik, als um Java.

Ich möchte verhindern, dass zwei Benutzer mit dem gleichen Programm auf den selben Ordner im Netzwerk zugreifen und an den Daten in dem Ordner rumspielen (weil das im Falle meines Programms ein mächtiges Chaos anrichten könnte). Momentan löse ich das Problem, indem ich dem das Programm, sobald ein Ordner gewählt wurde eine leere Datei anlegt in diesem Ordner. Möchte nun das gleiche Programm (nicht das selbe) diesen Ordner auswählen, sieht es die leere Datei und sagt dem Benutzer, dass das nicht erlaubt ist. Wenn das erste Programm beendet wird, löscht es die leere Datei und somit kann wieder jeder auf den Ordner zugreifen.

Soweit so gut, aber das Ganze könnte zu einem richtig großen Problem werden, wenn sich aus irgendeinem Grund der PC der das Programm grad durchführt abschmiert. Dann wird die Datei nicht gelöscht und niemand wird es mehr schaffen, den Ordner auszuwählen und der User steht wie der Ochs vorm Berg.

Deshalb meine Frage: Gibt es eine andere Möglichkeit, den Zugriff auf einen Ordner zu verwehren, solange ein JAVA-Programm mit dem Ordner arbeitet? Kann ich z.B. eine Datei anlegen, die sich selbst löscht, sobald die JVM nicht mehr läuft oder sowas? Oder gibts n viel intelligenteren Algo, um einen Ordner vor dem Zugriff anderer zur Laufzeit zu schützen?
 

Bleiglanz

Gesperrter Benutzer
bleib am besten bei deiner einfachen Lösung mit

java.io.File#deleteOnExit

ggf. auch java.nio.channels.FileLock, so richtig gut kriegt man das in Java aber wahrscheinlich nicht hin...
 

Bleiglanz

Gesperrter Benutzer
gut, wenn das stabil mit einem Stromausfall umgehen können soll, dann würde ich Oracle oder DB2 oder den SQL-Server installieren und die Locks da drin verwalten :)

richtig stabil lässt sich das in einer Java Standalone App einfach nicht implementieren
 

MPW

Top Contributor
Du koenntest auch einen JavaServer dazwischen schalten, der das dann regelt, das waere wahrscheinlich die sauberste Loesung, oder eine recht saubere Loesung, um mal Kritik vorwegzunehmen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben