# Verzeichnis sperren



## roddy (15. Dez 2005)

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?


----------



## Roar (15. Dez 2005)

such mal nach FileLock im forum )


----------



## Bleiglanz (15. Dez 2005)

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...


----------



## Illuvatar (15. Dez 2005)

Bleiglanz hat gesagt.:
			
		

> bleib am besten bei deiner einfachen Lösung mit
> 
> java.io.File#deleteOnExit



Wenn zum Beispiel der Strom auf einmal weg ist, nützt auch deleteOnExit nix mehr


----------



## Bleiglanz (16. Dez 2005)

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 (13. Jan 2006)

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.


----------

