Java文件IO学习笔记(二)---文件锁定

       平常我们打开文件的时候都遇到过“该文件已经被另一个程序占用,打开失败”的情况。这是因为有另一个程序正在编辑该文件,并且不希望编辑过程中其他程序来修改这个文件,因此进行了文件锁定。
通过导入包java.nio.channels.FileLock来实现文件的锁定
       通过使用FileLock类实现文件锁定。文件锁定可以是独占或者共享。共享锁定可阻止其它并发运行的程序获取重叠的独占锁定,但是允许该程序获得重叠的共享锁定。独占锁定则阻止其他程序获取任一类型的重叠锁定。一旦释放某个锁定,它就不会再对你其他程序所获取的锁定产生任何影响。
可以通过锁定的isShared()方法确定是独占还是共享。
       程序中fous.getChanne().tryLock()实现文件的锁定。FileLock.tryLock()实现整个文件的锁定。实际上也可以实现文件的部分锁定。语法;FileLock.tryLock(long position,long size,Boolean shared)是锁定文件中从position开始的size个字节,shared参数指定是否共享。
程序运行1分钟内对锁定文件写操作被禁止。


package corejava;

import java.io.FileOutputStream;
import java.nio.channels.FileLock;
/**
 * 文件锁定
 * */
public class TextLockFile {
	public static void fileLock(String file) {
		FileOutputStream fous = null;
		FileLock lock = null;
		try {
			fous = new FileOutputStream(file);// 创建文件输出流
			lock = fous.getChannel().tryLock();
			Thread.sleep(60 * 1000);//线程休眠1分钟,即是文本禁止写锁定一分钟
		} catch (Exception e) {// 捕获异常
			e.printStackTrace();
		} finally {
			try {
				if (lock != null) {
					lock.release();// 锁释放
				}
				if (fous != null) {
					fous.close();
				}
			} catch (Exception e) {
				e.printStackTrace();

			}
		}
	}

	public static void main(String[] args) {
		String file = "C:/Users/Administrator/Desktop/test.txt";//要锁定的文件
		System.out.println("锁定文件:"+file);
		fileLock(file);//调用锁定文件的方法

	}
}

      Java文件IO学习笔记(二)---文件锁定_第1张图片

你可能感兴趣的:(java,IO,文件)