Auf Thema antworten

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:


[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");    

[/CODE]


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?



Oben