import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
public class FileLockDemo {
/**
* Filelock 防止程序在运行期间,线程在访问文件的过程中修改文件导致Buffer中
* 的部分或者全部内容不可读,造成程序异常。
* 例子中展示的是新开以个线程访问主线程Filelock的文件。
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File file = new File("D://in.txt");
FileOutputStream fis = new FileOutputStream(file);
FileChannel fc = fis.getChannel();
FileLock flock = fc.tryLock();
if(flock.isValid()){
System.out.println(file.getName()+ "is locked");
}
new Thread(){
public void run(){
try{
File file = new File("D://in.txt");
FileOutputStream fi = new FileOutputStream(file);
fi.write('b');
}catch(Exception e){
e.printStackTrace();
}
}
}.run();
flock.release();
System.out.println(file.getName()+ "is released");
fc.close();
fis.close();
}
}
结果是该文件无法被新起的线程访问,运行结果:
in.txtis locked
java.io.IOException: The process cannot access the file because another process has locked a portion of the file
at java.io.FileOutputStream.write(Native Method)
at com.cn.tibco.nio.FileLockDemo$1.run(FileLockDemo.java:32)
at com.cn.tibco.nio.FileLockDemo.main(FileLockDemo.java:37)
in.txtis released
分享到:
相关推荐
SDL 的一个简单游戏实例 类似 泡泡龙 简单的实现
最简单的一个spring注解实例,最简单的一个spring注解实例。
网络爬虫一个最简单的实例;pip install scrapy;scrapy crawl job_position,
openssl一个简单的实例
一个简单的ios开发的实例 ,分享它是为了获得另一个实例,呵呵
一个MT4编程实例 KDJ一个MT4编程实例 KDJ一个MT4编程实例 KDJ一个MT4编程实例 KDJ一个MT4编程实例 KDJ一个MT4编程实例 KDJ一个MT4编程实例 KDJ
一个简单的实例,主要是一个参考,交流的作用
linux系统下实现一个简单的队列实例 此实例仅仅只实现了基本的出队 入队
Matlab GUI的一个简单实例,有源代码,可以运行
主要列举了PCI的DMA驱动开发实例,读者只需要在此基础上稍作修改即可。
oracle的一个简单存储过程实例,有原文件和使用说明。
c++ vs2008 应用程序只有一个实例 简单的demo 启动程序
一个简单的Matlab_GUI编程实例,适合初学者
一个非常好的C语言实例 一个非常好的C语言实例 一个非常好的C语言实例 一个非常好的C语言实例 一个非常好的C语言实例 一个非常好的C语言实例 一个非常好的C语言实例
一个简单的EJB实例,让初学者对EJB有个初步概念,如何配置jndi.properties文件
刚学了FreeMarker,就做了一个简单的实例,跟struts结合,struts的界面用.ftl生成,有全部的源码,保证能运行
一个最简单的MFC程序实例.doc 一个最简单的MFC程序实例.doc
简单多线程实例。简单多线程实例。简单多线程实例。简单多线程实例。简单多线程实例。
每个实例都有项目简介、设计思路、数据结构、完整程序、运行结果五个部分,可以直接拿来做一篇课程设计。实例名称有:学生成绩管理系统、考试报名管理、约瑟夫生者死者游戏、迷宫旅行游戏、八皇后问题、停车场管理、...
这个是一个简单的C语言实例!非常容易学习C语言