Hallo,
ich habe folgendes Problem: Ich möchte den nebenläufigen Zugriff auf eine Datei verhindern, also nutze ich diese Channel-Objekte, erstelle einen FileLock und sage lock() bzw. tryLock(). Das sieht dann ungefähr so aus:
Es wird immer blockiert, egal ob ich nun tryLock() oder lock() verwende. Ich habe gelesen, dass tryLock() nicht blockiert soll, was sich wohl als unrichtig herausgestellt hat.
Jetzt zu den Nebenbedingungen: Es gibt keinen anderen Prozess, der einen Lock haben könnte. Selbst bei frisch erstellen Dateien wird blockiert. Im Prozessexplorer finde ich auch keinen Handle diese Datei betreffend.
Das BS: Windows XP. Das Dateisystem: NTFS
Was kann die Ursache des Blockierens sein?
ich habe folgendes Problem: Ich möchte den nebenläufigen Zugriff auf eine Datei verhindern, also nutze ich diese Channel-Objekte, erstelle einen FileLock und sage lock() bzw. tryLock(). Das sieht dann ungefähr so aus:
Code:
final File file = new File(filename);
FileChannel channel = null;
FileLock lock = null;
FileInputStream in = null;
try {
in = new FileInputStream(file);
channel = in.getChannel();
LOG.debug("demand file lock");
lock = channel.tryLock(); // oder lock()
LOG.debug("got file lock");
Es wird immer blockiert, egal ob ich nun tryLock() oder lock() verwende. Ich habe gelesen, dass tryLock() nicht blockiert soll, was sich wohl als unrichtig herausgestellt hat.
Jetzt zu den Nebenbedingungen: Es gibt keinen anderen Prozess, der einen Lock haben könnte. Selbst bei frisch erstellen Dateien wird blockiert. Im Prozessexplorer finde ich auch keinen Handle diese Datei betreffend.
Das BS: Windows XP. Das Dateisystem: NTFS
Was kann die Ursache des Blockierens sein?