java io 文件锁_Java IO:在文件上创建文件锁

先上代码,看实例:

public static void main(String[] args) {

try {

File file = new File("FileToLock.dat");

// 创建一个随机访问的文件流,来进行读取,同时可以做写操作

FileChannel channel = new RandomAccessFile(file, "rw").getChannel();

// 在这个管道的文件上获得一个特有的锁,直到锁被取回,都处于阻塞状态

FileLock lock = channel.lock();

try {

// 在这个管道文件上尝试获取这个特有的锁,进行自旋,如果文件已经被锁住,那么返回null或者一个异常

channel.tryLock();

} catch (OverlappingFileLockException e) {

System.out.println("Overlapping File Lock Error: "

+ e.getMessage());

}

//释放锁

lock.release();

//关闭管道

channel.close();

} catch (IOException e) {

e.printStackTrace();

}

}

这就是用FileChannel创建文件锁的例子;

1:把你想要在锁住的真实文件系统封装成File对象。 2:创建一个随机进入的文件流(读写)。要做到这样就必须创建一个RandomAccessFile来封装上面创建的File对象,然后对读写模式进行选择 ,然后通过 RandomAccessFile的getChannel方法获得管道,从而对数据进行读写操作。 3:通过FileChannel类的lock()方法获得一个channel的文件的特有的锁,这个方法会一直阻塞,直到文件被锁住或者是管道关闭,或者是调用的线程被打断。利用Lock方法,文件就会获得FileLock类的引用。 4:可以使用FileChannel 的tryLock(),这个方法会尝试获取这个管道的文件的特有的锁,但是不会阻塞。调用的返回结果不是获得锁成功,就是失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值