Class FileLock

java.lang.Object
org.openide.filesystems.FileLock
All Implemented Interfaces:
AutoCloseable

public class FileLock extends Object implements AutoCloseable
Represents an acquired lock on a FileObject. Typical usage includes locking the file in the editor on first modification, and then using this object to ensure exclusive access when overwriting the file (saving) by using FileObject.getOutputStream(org.openide.filesystems.FileLock). Also used for renames, deletes, &c.

Note that such locks are only used to protect against concurrent write accesses, and are not used for read operations (i.e. they are not write-one-read-many locks). Normally this is sufficient protection. If you really need an atomic read, you may simply lock the file, perform the read, and unlock it when done. The file will still be protected against writes, although the read operation did not request a lock.

The FileLock implements AutoCloseable, so it can be created within try-with-resources resource clause and the lock will be released at the end of the try block.

Since:
9.2 implements AutoCloseable interface.
See Also:
  • Field Details

    • NONE

      public static final FileLock NONE
      Constant that can be used in filesystems that do not support locking. Represents a lock which is never valid.
    • lockedBy

      protected Throwable lockedBy
  • Constructor Details

    • FileLock

      public FileLock()
  • Method Details

    • releaseLock

      public void releaseLock()
      Release this lock. In typical usage this method will be called in a finally clause.
    • close

      public void close()
      Releases the lock. Equivalent to releaseLock() call.
      Specified by:
      close in interface AutoCloseable
    • isValid

      public boolean isValid()
      Test whether this lock is still active, or released.
      Returns:
      true if lock is still active
    • finalize

      public void finalize()
      Finalize this object. Calls releaseLock() to release the lock if the program for some reason failed to.
      Overrides:
      finalize in class Object