侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

Java IO:在文件上创建文件锁

2022-07-06 星期三 / 0 评论 / 0 点赞 / 71 阅读 / 1789 字

先上代码,看实例:<!-- lang:java -->public static void main(String[] args) {try {File file = new File("FileTo

先上代码,看实例:

<!-- lang:java -->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(),这个方法会尝试获取这个管道的文件的特有的锁,但是不会阻塞。调用的返回结果不是获得锁成功,就是失败。

广告 广告

评论区