- 在多个运行程序需要并发地修改同一个文件时,程序之间需要通过某种机制来进行通信,文件锁就是其中地一种
- 在NIO中,是通过Channel对象的lock/tryLock方法来获得文件锁FileLock对象,从而锁定文件,以下为一个简单的示例
import java.io.FileOutputStream; import java.nio.channels.FileChannel; import java.nio.channels.FileLock; public class FileLockTest { public static void main(String args[]) throws Exception{ try(FileChannel fileChannel = new FileOutputStream("a.txt").getChannel()){ FileLock lock = fileChannel.tryLock(); Thread.sleep(10000); lock.release(); } } }
在程序运行开始后的十秒内,如果打开a.txt修改之后保存会出现“另一个程序正在使用此文件,进程无法访问”错误
-
这是我看李刚编著的《疯狂Java讲义》后总结出来的。