Wednesday, July 20, 2011

Creating a Shared File Lock on a File

package org.best.example;

public static void main(String[] args)
    {
         try {
         // Obtain a file channel
         File file = new File("filename");
         FileChannel channel = new RandomAccessFile(file, "rw").getChannel();
       
         // Create a shared lock on the file.
         // This method blocks until it can retrieve the lock.
         FileLock lock = channel.lock(0, Long.MAX_VALUE, true);
       
         // Try acquiring a shared lock without blocking. This method returns
         // null or throws an exception if the file is already exclusively locked.
             try {
             lock = channel.tryLock(0, Long.MAX_VALUE, true);
             } catch (OverlappingFileLockException e) {
             // File is already locked in this thread or virtual machine
         }
       
         // Determine the type of the lock
         boolean isShared = lock.isShared();
       
         // Release the lock
         lock.release();
       
         // Close the file
         channel.close();
         } catch (Exception e) {
     }
}

No comments: