Java IO:在文件上创建文件锁-程序员宅基地

技术标签: java  

先上代码,看实例:

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

转载于:https://my.oschina.net/sudojs/blog/288657

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33727510/article/details/91856282

智能推荐

gcc -nostartfiles; -nodefaultlibs; -nostdlib;-f...-程序员宅基地

文章浏览阅读3.4k次。为什么80%的码农都做不了架构师?>>> ..._-nostartfiles

Windows 7下:应用程序无法正常启动(0xc0150002)_win7应用程序无法正常启动0xc0150002解决方法-程序员宅基地

文章浏览阅读1.8w次。在新系统中正确安装QQ2010无法运行,同时安装的TM2009也无法运行。同样显示为“应用程序无法正常启动(0xc0150002)。请单击“确定”关闭应用程序”。在百度,Google中搜索中发现有许多人遇到了同样的问题,而且软件也不限于腾讯软件,有摄像头、CAD的各种软件。 打开查看后发现大多数答案并不正确,也无法解决这个问题。经过我的研究以上软件,发现_win7应用程序无法正常启动0xc0150002解决方法

知识点十八:字符串匹配算法(Ⅰ)—— BF/RK算法-程序员宅基地

文章浏览阅读753次。前言字符串匹配这样一个功能,对于任何一个开发工程师来说,应该都不会陌生。我们用的最多的就是编程语言所提供的字符串查找函数,比如 Java 中的 indexOf(),Python 中的 find() 函数等,它们底层就是依赖字符串匹配算法。字符串匹配算法很多,两种比较简单的、比较好理解的是:BF 算法和 RK 算法。比较难理解、但更加高效的有:BM 算法和 KMP 算法。这四种都是单模式串匹配算法...

JVM常用基础参数-栈内存Xss讲解_jvm xss-程序员宅基地

文章浏览阅读2.2w次,点赞8次,收藏54次。JVM常用基础参数-栈内存Xss讲解大厂面试题:1、JVM垃圾回收时候如何确定垃圾?是否知道什么是GC Roots2、你说你做过JVM参数调优和参数配置,请问如何盘点查看JVM系统默认值3、你平时工作中用过的JVM常用基本配置参数有哪些?4、强引用、软引用、弱引用、虚引用费别是什么?5、请你谈谈对OOM的认识6、GC垃圾回收算法与垃圾收集器的关系?分别是什么请你谈谈?..._jvm xss

jQuery实现的多滑动门和多选项卡效果_jquery滑动门-程序员宅基地

文章浏览阅读73次。在网页设计和开发中,滑动门(sliding doors)和选项卡(tabs)是常用的交互效果,它们可以为网页添加动态和互动性。本文将介绍如何使用jQuery库实现多滑动门和多选项卡效果,并提供相应的源代码。通过绑定合适的事件和操作DOM元素的CSS类,我们可以为网页添加动态和交互性。的元素上时,它的宽度会从100像素动画缓慢地增加到200像素,持续时间为300毫秒。选项卡效果常用于切换不同内容或功能区域,用户可以通过点击选项卡来显示相应的内容。标签中,多个具有相同类名的选项卡将具备切换显示内容的效果。_jquery滑动门

Activiti中ServiceTask的java服务任务_activiti servicetask-程序员宅基地

文章浏览阅读4.8k次。原文地址:https://blog.csdn.net/u012613903/article/details/42677635activiti.cfg.xml内容:&lt;?xml version="1.0"?&gt;&lt;beans default-lazy-init="false" xsi:schemaLocation=" http://www.springframework.o..._activiti servicetask

随便推点

MAC开发工具:ITERM2 log自动保存相关配置_iterm log plain text-程序员宅基地

文章浏览阅读1.6k次。上图中的“Automatically log session input to file in :”勾选后选定地址即可_iterm log plain text

VMWARE提示用户已取消该操作_vm用户已取消该操作-程序员宅基地

文章浏览阅读1.6w次。提示“用户已取消该操作的”解决办法_vm用户已取消该操作

python中对文件路径的获取_python获取文件路径-程序员宅基地

文章浏览阅读2.6w次,点赞12次,收藏98次。获取文件路径基本方法_python获取文件路径

三范式分解算法-程序员宅基地

文章浏览阅读1w次。三范式是BC范式的放宽 三范式条件(满足一个即可): 1. α–&gt;β是平凡的函数依赖,除了子集和父集的函数依赖,大多的函数依赖都是非平凡的 2. α是关系模式R的一个超码 3. (β-α)属性集里的所有属性都被包含在 R的candidate key里,注意 (β-α)的属性集里的所有元素,可以 分别被包含在多个 candidate key中三范式分解算法伪代码如下://在关..._三范式分解算法

Android OpenCV(三十一):图像形态学-程序员宅基地

文章浏览阅读711次,点赞11次,收藏30次。笔者之前工作是在金融公司可能并不是特别追求技术,而笔者又是喜欢追求技术的人,所以格格不入,只能把目标放在互联网大厂了。也希望大家都去敢于尝试和追逐自己的梦想!BATJ大厂Android高频面试题《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

【Android开发—智能家居系列】(二):用手机对WIFI模块进行配置_怎么设置手机app管理wifi模块代码-程序员宅基地

文章浏览阅读1.7w次,点赞16次,收藏63次。在实际开发中,我开发的这款APP是用来连接温控器,并对温控器进行控制的。有图为证,哈哈。      上一篇文章【Android开发—智能家居系列】(一):智能家居原理 的文末总结中写到:   手机APP控制智能温控器就两步:一是通过手机,让WIFI模块接入网络,而是通过网络,使用手机对模块发送指令。在这篇文章中,我们来介绍第一个步骤。【时序图】   【概念】【两种模式】_怎么设置手机app管理wifi模块代码

推荐文章

热门文章

相关标签