- import java.io.RandomAccessFile;
- import java.nio.channels.FileChannel;
- import java.nio.channels.FileLock;
- public class FileSlock {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int b;
- byte tom[]=new byte[12];
- try{
- RandomAccessFile input=new RandomAccessFile("FileSlock.java","rw");
- FileChannel channel=input.getChannel();
- while((b=input.read(tom,0,10))!=-1){
- FileLock lock=channel.tryLock();
- String s=new String(tom,0,b);
- System.out.println(s);
- try{
- Thread.sleep(1000);
- lock.release();
- }catch(Exception eee){
- System.out.println(eee);
- }
- }
- input.close();
- }catch(Exception ee){
- System.out.println(ee);
- }
- }
- }
- /*
- 代码分析:
- 1.使用RandomAccessFile建立指向文件的流对象,该对象的读写属性必须是”rw“,如RandomAccessFile input=new RandomAccessFile("FileSlock.java","rw");
- 2.流对象input调用方法getChannel()获得一个连接到底层文件的FileChannel对象(信道),如FileChannel channel=input.getChannel();
- 3.信道调用tryLock()或lock()方法,获得一个FileLock(文件锁)对象,这一过程就叫做对文件加锁。如FileLock lock=channel.tryLock();
- 文件锁对象产生后,讲禁止任何程序对文件进行操作,或再进行加锁。对一个文件加锁后,如果想读、写文件必须让FileLock对象调用realise()释放文件锁如
- lock.release();
- */
复制代码
|