Test: Datei geöffnet???
-
Hallo!
Gibt es in Java eine Möglichkeit zu testen, ob eine Datei von einem anderen Prozess geöffnet ist/verwendet wird? Sprich wenn jemand anderes diese gerade liest oder so...
THX!
-
Hi
Du kannst ja versuchen die Datei zu öffnen wenn dies Fehlschlägt dann ist die datei in Benutzung.
-
Ja, das funktioniert auch unter Windows und OS/2. Aber unter einem Betriebssystem wie Linux geht das nicht mehr. Unter *nix-Systemen können mehrere Prozesse auf eine Datei zur selben Zeit zugreifen.
Das ist auch das Problem das ich habe: Es wird eine LOG-Datei erstellt und vom jeweiligen Benutzer (Client) offen gehalten. Der Server schaut dann, ob er die Datei löschen kann. Wenn er die Datei nicht löschen kann (so war es bis jetzt) dann ist der Benutzer noch eingeloggt. Jetzt aber soll auch eine Linux-Version rauskommen, und da geht dieses Prinzip nicht mehr
Deswegen habe ich in der API-Doku rumgesucht, ob man prüfen kann ob eine Datei von einem anderen Prozess verwendet wird. Hab aber nichts gefunden
-
machs halt so:
das program erstellt noch eine datei zB ".lock"
falls diese existiert laeuft das programm.
beim beenden loescht das programm die datei. Existiert die datei nicht laeuft also folglich auch das Programm nicht.Problem: stuerzt dein Programm ab oder wird gekillt kann er die Datei nicht mehr loeschen.
Um das zu erkennen koenntest du aber zB alle paar minuten/sekunden nen timestamp in die datei schreiben.
Ist der zu alt ging wohl was schief und du kannst davon ausgehen dass das programm nicht mehr laueft und weisst zusaetzlich dass es nich sauber beendet wurde.
-
@defob:
ja, vielleicht sollte man es so machen. ich weiß halt nur nicht, ob das auch ankommen wird, da ich eine lösung für einen anderen entwickler suche. d. h. jemand anderes macht die realisation, ich bringe ihm nur die theorie...jedenfalls danke
-
Tja also Marketing ist nicht unbedingt meine stärke.
ABER der Netscape Navigator (hat mal? lange nich benutzt)macht das auch so wenn ich mich recht entsinne.
-
hi,
wenn'e 1.4 benutzt gibts die Klassen FileLock, FileChannel
in Verbindung mit FileInputstream, FileOutputStream, RandomAccessFilehier der TechTip dazu
http://developer.java.sun.com/developer/JDCTechTips/2002/tt0924.html#1bis dänn, O'Dog