`

java 文件锁

    博客分类:
  • j2se
阅读更多
1:在javaN(new)IO  中提供了文件锁的功能, 这样当一个线程文件锁定后,
其他的线程是无法操作此文件的, 要想进行文件锁定的操作,
则要使用FileLock 类完成, 此类 的对象需要依靠 FileChannel 进行实例化。

2:FileChannel实例化文件锁FileLock 对象的方法:
方法说明
Public final FileLock  lock()  throws  IOException获得通道的文件的独占锁定
Public absact FileLock lock(long  postion , long size  boolean shared )获得此通道文件给定区域的锁定, 并指定锁定, 锁定区域的大小, 是共享锁(true) 还是独占锁(false)
Public final FileLock tryLock() throws IOException尝试获取此通道的独占锁定
Public abstract FileLock tryLock(long  postion , long size  boolean shared )尝试 获得此通道文件给定区域的锁定, 并指定锁定, 锁定区域的大小, 是共享锁(true) 还是独占锁(false)


3:  FileLock 的方法
Public  final boolean isShared()判断锁定是否为共享锁
Public  final FileChannel  chanel()返回此锁定的FileChannel
Public  abstract  void  release()  throws IOException 释放锁
Pbulic   final  long size()返回锁定的区域。

4:
锁的定义:
共享锁: 允许多个线程对文件进行读操作。
独占锁: 只允许一个线程进行文件的读写操作。
代码示例
/**
 *java6democom.filelock.demoFileLockDemo.java
 *@authon 李亚希 :2011-2-21
 */
package com.filelock.demo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;

/**
 * @author Administrator
 */
public class FileLockDemo {
	public static void main(String[] args) {
		try 
		{
			File   f = new File("D:"+File.separator+"liyaxi.txt");
			FileOutputStream    output = null;
			output = new FileOutputStream(f , true); //true 的意思是追加内容
			FileChannel    fc = output.getChannel();
			FileLock    fLock = fc.tryLock();
			if(null != fLock)
			{
				 System.out.println(f.getName()+" 文件被独占锁锁定 30");
				 try {
					Thread.sleep(30000);// 线程休眠3万毫秒
					fLock.release(); //释放锁定
					System.out.println("文件锁定被解除!!!");
				} catch (InterruptedException e) {
					  System.out.println("线程休眠时 发生了   中断异常!");
					e.printStackTrace();
				} 
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}		
	}

}

output = new FileOutputStream(f , true);  这里 true  为了 文件内容不丢失。

效果看附件截图

  • 大小: 79.1 KB
分享到:
评论

相关推荐

    Java文件锁笔记

    :Java新IO】_文件锁笔记032003

    java 文件锁的简单实现

    主要介绍了java 文件锁的简单实现的相关资料,需要的朋友可以参考下

    java文件锁的实现

    NULL 博文链接:https://sosuny.iteye.com/blog/704587

    单文件锁,锁excel word的 文件很管用

    只锁一个文件,excel word 自带密码不好用,就试一下这个吧单个文锁,目前我也没找到破解的方法,如果忘记密码的了呵呵呵,上帝保佑,如你知也通知我一下吧 ths

    nio.rar_FastCopyFile.java_NIO_UseFloatBuffer.java_java nio_文件锁

    Java NIO 源码适合初学者,里面包括通道和Buffer的基本适用,以及文件锁,和内存文件映射等等

    Java 操作 XML 文件

    java 读取 XML 使用 xml 。。。。。。。。。。。

    java多线程之并发锁

    此文档能够让读者彻底了解JAVA开发中的多线程并发锁的使用

    java文件操作

    很久以前的工具类代码不过很实用,java的文件读写创建目录复制,移动,文件序列化,反序列化,文件锁,xml文件的读取,诸多内容囊括其中注释也十分详细,学习文件流的不二选择

    基于Java的FastDFS大文件上传与断点续传设计源码

    该项目旨在实现h5与fastdfs之间的高性能断点续传、秒传、大文件上传以及使用redis文件锁。系统提供了文件上传、文件处理、文件存储等功能。通过该项目,开发者可以学习并实践Java技术的应用,为后续的Web开发奠定...

    javacore和dump分析工具

    javacore.txt文件用jca打开,heapdump.phd文件用ha打开。...包括 Java 虚拟机的参数,环境变量,内存段的分配情况,垃圾回收日志,各种内部锁的状态,各线程在当前时刻的运行栈,以及类加载状态等。

    Java 2教程(第五版)

    文件锁、映射的I/O技术以及数据结构与集合;服务器端Java技术部分讨论了JFC/Swing CGI开发、Applet、容器布局以及图形编程等技术;企业级Java技术部分讨论了JDBC API、EJB体系结构的基础知识、Java平台安全方案以及...

    Java登录时滑动图片解锁

    该文件是使用javaweb相关的知识编写的关于用户登录界面实现滑动图片解锁实现安全登录的功能项目

    JAVA_API1.6文档(中文)

    java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序...

    Java思维导图xmind文件+导出图片

    CDN静态文件访问 分布式存储 分布式搜索引擎 应用发布与监控 应用容灾及机房规划 系统动态扩容 分布式架构策略-分而治之 从简到难,从网络通信探究分布式通信原理 基于消息方式的系统间通信 理解通信协议...

    Java 1.6 API 中文 New

    java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序...

    java中锁知识的整理,文件是.xmind思维导图

    适合已经学过锁这方面知识的小伙伴进行学习,思维导图对各种锁进行了详细整理总结,采用思维导图的方式更加方便大伙们学习并记忆。

    Java Web开发技术大全.zip pdf文件

    由于Java Web开发技术大全pdf文件太大120多M,上传资源要求在20M以内,所以大家必须要把Java Web开发技术大全.z01,Java Web开发技术大全.z02,Java Web开发技术大全.z03,Java Web开发技术大全.z04,Java Web开发...

    文件夹、文件加密码锁工具

    直接给文件夹的内容加上一个密码锁,可以防止外人访问内容。

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    实现一个拷贝文件的类使用字节流还是字符串.mp4 │ Java面试题13.线程的实现方式 怎么启动线程怎么区分线程.mp4 │ Java面试题14.线程并发库和线程池的作用?.mp4 │ Java面试题15.设计模式和常用的设计模式.mp4 │ ...

Global site tag (gtag.js) - Google Analytics