Filelock erkennen

Sanix

Top Contributor
Hallo,
Gibt es eine Möglichkeit zu erkennen, ob eine Datei gesperrt ist, ohne einfach zu versuchen sie nochmals zu sperren?

Meine bisherige Implementierung sieht wie folgt aus:
Java:
	/**
	 * Tries to lock a file.
	 * @return true if lock has been acquired, false if file is already locked
	 */
	public boolean getLock() {
		    try {
			    fileLock = new FileInputStream(file).getChannel().lock(0, Long.MAX_VALUE, true);
			    return true;
		    } catch(OverlappingFileLockException ex) {
		    	return false;
		    } catch (Exception e) {
		    	System.out.println(e);
		    	e.printStackTrace();
		    }
		return false;
	}

Nun könnte ich, wie oben beschrieben, einfach den Lock auf ein File anfordern, um zu schauen ob es gesperrt ist und ihn dann wieder freigeben.
 
Zuletzt bearbeitet:

Sanix

Top Contributor
Ich habe bereits eine neue Frage zu diesem Thema. Habe ein bisschen rumprobiert und verstehe folgendes Verhalten nicht:

Java:
		System.out.println("Acquire lock: " + report.getLock());
		System.out.println("Acquire lock: " + report.getLock());
		System.out.println("Release lock");
		report.releaseLock();
		System.out.println("Acquire lock: " + report.getLock());

Ergibt:
Lock:sun.nio.ch.FileLockImpl[0:9223372036854775807 shared valid]
Acquire lock: true
Acquire lock: false
Release lock
Lock:sun.nio.ch.FileLockImpl[0:9223372036854775807 shared valid]
Acquire lock: true

Also das gewünschte Verhalten. Wenn ich das Programm 2x starte, kriegen beide einen Lock mit derselben Adresse. Windows jedoch erkennt den Lock und ich kann die Datei mit dem Notepad nicht bearbeiten. Wie ist das möglich? Sharen die vms Locks auf Dateien? Falls ja, warum kann ich dann in demselben Programm den Lock nicht 2x erhalten?

Methode getLock():
Java:
	/**
	 * Tries to lock a file.
	 * @return true if lock has been acquired, false if file is already locked
	 */
	public boolean getLock() {
	    try {
		    fileLock = new FileInputStream(file).getChannel().tryLock(0, Long.MAX_VALUE, true);
		    System.out.println("Lock:" + fileLock);
		    return true;
	    } catch(OverlappingFileLockException ex) {
	    	return false;
	    } catch (Exception e) {
	    	System.out.println(e);
	    	e.printStackTrace();
	    }

		return false;
	}
 
G

Gast2

Gast
wozu brauchst Du Hilfe? ... die Lösung steht doch eindeutig im Quelltext [c]tryLock[/c]
 

Sanix

Top Contributor
Ich verstehe das Verhalten nicht.

  • Wenn ich im selben Programm einen Lock 2x hole, geht es das erste Mal und das 2. Mal nicht -> macht Sinn
  • Wenn ich einen Lock im 1. Programm hole und behalte und parallel ein 2. Programm öffne kriege ich den Lock auch im 2. Programm -> Warum? Das erste soll exklusivrechte haben
  • Wenn ich einen Lock erhalte und probiere die Datei in Windows zu öffnen, kann ich nicht schreiben -> Macht Sinn

Ich will verhindern, dass das Programm 2 einen Lock erhält. Dass ist ja der ganze Sinn, oder das was ich brauche.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S FileLock Java Basics - Anfänger-Themen 4
T scanner eingaben erkennen und umtauschen Java Basics - Anfänger-Themen 4
B Zusammenhängende Blöcke bei x-gewinnt erkennen? Java Basics - Anfänger-Themen 14
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
H Logik Fehler erkennen Java Basics - Anfänger-Themen 21
1 Wie dieses Muster am einfachsten erkennen? Java Basics - Anfänger-Themen 32
Yasemin bahar Muster erkennen Java Basics - Anfänger-Themen 13
U Muster in einem Array erkennen Java Basics - Anfänger-Themen 8
N Eingabe erkennen, ob groß oder kleingeschrieben worden ist Java Basics - Anfänger-Themen 22
N palindrom erkennen Java Basics - Anfänger-Themen 3
A Figur erkennen, aber Abweichung falsch Java Basics - Anfänger-Themen 2
C Erkennen ob Frame geschlossen wurde Java Basics - Anfänger-Themen 2
M Rationale Zahl erkennen - Kurze Frage zum Restwert nach Division Java Basics - Anfänger-Themen 3
P Eigenschaft eines imperativen Algo (Pseudocode) sofort erkennen Java Basics - Anfänger-Themen 1
G Verlassen einer ComboBox erkennen Java Basics - Anfänger-Themen 16
S Java Großbuchstabe erkennen Java Basics - Anfänger-Themen 5
D Wenn ich repaint(); mache, flackert es so stark, das man fast nichts erkennen kann. Java Basics - Anfänger-Themen 11
B Unterschiede in einer Liste erkennen Java Basics - Anfänger-Themen 1
O String: Befehl und Wert erkennen. Java Basics - Anfänger-Themen 4
S Zeilenumbruch mit Scanner erkennen Java Basics - Anfänger-Themen 9
J Leerzeichen im Pfad automatisch erkennen Java Basics - Anfänger-Themen 30
M Input/Output Zeilenumbrüche erkennen und beibehalten Java Basics - Anfänger-Themen 4
X XML-Eintrag an Attribute erkennen Java Basics - Anfänger-Themen 2
N Erkennen ob Linkshänder Maus Java Basics - Anfänger-Themen 4
L In Javakara Palindrom erkennen. Java Basics - Anfänger-Themen 9
B Tastatureingabe erkennen Java Basics - Anfänger-Themen 8
D Input/Output Buchstaben als bestimmte Zahl erkennen Java Basics - Anfänger-Themen 4
F Blinken oder Dauer ein erkennen Java Basics - Anfänger-Themen 6
F Linien und Kurven erkennen Java Basics - Anfänger-Themen 2
T Richtigen Wert erkennen Java Basics - Anfänger-Themen 9
D Klassenmethode: Befehl erkennen, dann int zurückgeben Java Basics - Anfänger-Themen 2
S Laufzeitfehler erkennen Java Basics - Anfänger-Themen 3
T Erste Schritte Methoden anwenden und erkennen Java Basics - Anfänger-Themen 5
D Erste Schritte Array erkennen Java Basics - Anfänger-Themen 4
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
J Byte Folge erkennen Java Basics - Anfänger-Themen 5
F Attribute von Feldinhalten erkennen Java Basics - Anfänger-Themen 6
N Erste Schritte Doppelwerte erkennen Java Basics - Anfänger-Themen 5
H Schachbrett erkennen Java Basics - Anfänger-Themen 19
T Erste Schritte Leerzeile in JAVA erkennen /übergehen Java Basics - Anfänger-Themen 9
S Erkennen ob Zahl durch 500Teilbar ist Java Basics - Anfänger-Themen 21
Java-Insel StringBuilder Zeilenumbrüche erkennen Java Basics - Anfänger-Themen 3
H Datei in kleine Stücke teilen und wieder erkennen Java Basics - Anfänger-Themen 10
T Erkennen ob ein Pfad lokal oder im Netzwerk ist Java Basics - Anfänger-Themen 13
X String Sonderzeichen/Zahlen erkennen Java Basics - Anfänger-Themen 3
P System - Tage erkennen ( System Time ?) Java Basics - Anfänger-Themen 3
M Betriebssystem erkennen? Java Basics - Anfänger-Themen 12
lumo Collections Array - erkennen von positionsänderungen Java Basics - Anfänger-Themen 5
M Muster erkennen. Idee: Fassade. Java Basics - Anfänger-Themen 3
M Java-Prog soll Texte innerhalb Bildern erkennen Java Basics - Anfänger-Themen 2
S Leere Datei erkennen Java Basics - Anfänger-Themen 5
E ActionListener in anderer Klasse erkennen Java Basics - Anfänger-Themen 13
Kukulkan Java-Version (ME, SE) erkennen und darauf reagieren? Java Basics - Anfänger-Themen 35
E Position erkennen und überlappungen feststellen Java Basics - Anfänger-Themen 4
3 Leerzeichen erkennen Java Basics - Anfänger-Themen 3
A Gruppen von Namen erkennen Java Basics - Anfänger-Themen 21
M In Router einloggen und PCs im Netzwerk erkennen Java Basics - Anfänger-Themen 18
M ziffer in zahl erkennen mit boolean Java Basics - Anfänger-Themen 12
D Zahl erkennen Java Basics - Anfänger-Themen 4
T Image Position erkennen Java Basics - Anfänger-Themen 6
S Sonderzeichen in einem String erkennen Java Basics - Anfänger-Themen 20
A Angeschlossenes Gerät am Com Port erkennen Java Basics - Anfänger-Themen 4
L Zeilenwechselsequenz erkennen aus der Datei heraus Java Basics - Anfänger-Themen 2
S Erkennen der Eingabe Java Basics - Anfänger-Themen 13
G eine straße im kartenspiel erkennen (algorithmus) Java Basics - Anfänger-Themen 4
G Bildinformationan auslesen - OCR - Zahlen erkennen Java Basics - Anfänger-Themen 10
B Properties erkennen, auslesen Java Basics - Anfänger-Themen 7
M in Textfile Strukturen erkennen Java Basics - Anfänger-Themen 5
kulturfenster Teilstring erkennen Java Basics - Anfänger-Themen 5
L Laufwerksauswahl / Laufwerke erkennen Java Basics - Anfänger-Themen 3
B Threadende erkennen Java Basics - Anfänger-Themen 6
E Klassen erkennen in einer Aufgabenstellung Java Basics - Anfänger-Themen 6
L path einlesen und erkennen ob es für windows oder linux ist Java Basics - Anfänger-Themen 8
H Zeilenanzahl eines Strings erkennen Java Basics - Anfänger-Themen 2
S Umlaute und Sonderzeichen erkennen Java Basics - Anfänger-Themen 12
C Erkennen einer gedrückten Taste Java Basics - Anfänger-Themen 6
S CD/DVD-Laufwerke erkennen mit Java Java Basics - Anfänger-Themen 3
R erkennen von Wortende Java Basics - Anfänger-Themen 5
N Veränderungen in JTextArea erkennen Java Basics - Anfänger-Themen 5
K Wortpaare in Texten erkennen Java Basics - Anfänger-Themen 8
C Japanische Zeichen erkennen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben