`

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 中,可以使用 FileLock 类来实现文件锁。下面将详细介绍 Java 文件锁的简单实现。 什么是文件锁 文件...

    java文件锁的实现

    在Java编程语言中,文件锁是一种用于控制对文件进行并发访问的重要机制。它允许一个或多个进程在同一时间对文件的特定部分进行独占访问,从而防止数据的不一致性。本篇将深入探讨Java中文件锁的实现,以及如何在实际...

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

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

    nio.rar_FastCopyFile.java_NIO_UseFloatBuffer.java_java nio_文件锁

    在给定的压缩包文件中,我们关注的是"FastCopyFile.java"、"UseFloatBuffer.java"以及NIO中的文件锁功能。 首先,让我们详细了解一下`FastCopyFile.java`。这个文件很可能是一个示例程序,演示了如何使用Java NIO...

    java 写文件 java 写文件 java 写文件 java 写文件

    7. **同步写入**:如果多线程环境需要同时写入文件,可以考虑使用FileChannel的锁机制,以防止数据交错。 8. **字符编码**:默认情况下,FileWriter使用平台默认编码。如果需要指定特定编码,可以使用`new ...

    简单java文件过滤

    当然,实际应用中可能需要考虑更多因素,如错误处理、文件锁、并发访问等。在大型项目中,你可能会选择使用Apache Commons IO库或Java 8的Stream API来简化文件操作。 总的来说,“简单java文件过滤”涉及了Java中...

    java多线程之并发锁

    Java 多线程之并发锁 Java 中的多线程编程是指在一个程序中同时运行多个线程,以提高程序的执行效率和响应速度。在多线程编程中,线程间的同步是非常重要的,因为不同的线程可能会同时访问同一个共享资源,导致数据...

    java分布式锁实现代码

    本文将深入探讨如何使用Redisson和Curator框架来实现Java环境中的分布式锁。 首先,让我们来看一下Redisson实现的分布式锁。Redis是一个高性能的键值数据库,常被用作分布式系统的缓存或数据存储。Redisson是基于...

    Java 操作 XML 文件

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

    Java版文件系统

    Java的`java.util.concurrent`包提供了锁和同步原语,如`synchronized`关键字、`ReentrantLock`和`Semaphore`,用于管理并发访问。 7. **文件系统设计**:一个完整的文件系统需要考虑目录结构、文件命名规则、文件...

    java 分割文件 将大文件分割成小文件

    例如,如果文件正在被其他进程使用,可能需要实现锁机制。同时,确保在处理文件后正确关闭输入/输出流,以防止资源泄露。 总结起来,Java提供了丰富的API来处理文件操作,包括分割大文件。通过结合`FileInputStream...

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

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

    java 加密锁例子

    在Java编程环境中,加密锁(通常称为硬件保护锁或安全密钥)是一种物理设备,用于保护软件不被非法复制和使用。加密锁通常通过USB接口连接到计算机,它包含一个微处理器,可以执行复杂的加密算法,确保只有授权的...

    基于Java向zip压缩包追加文件

    - 为了保证操作的原子性,可以考虑在处理过程中使用文件锁,以防止在压缩过程中文件被其他进程修改。 - 如果ZIP文件非常大,解压和再压缩的过程可能会消耗大量时间和资源,因此在处理大数据量时需要谨慎设计。 6....

    java大文件上传

    这里需要注意文件锁的管理,以防止并发上传时的文件冲突。 对于断点续传,`plupload`会在客户端保存上传进度,如果上传中断,用户可以继续未完成的上传,服务器端需要有相应的机制识别并处理这些续传请求。这通常...

    java实现多线程文件传输

    10. **安全性**:在多线程环境下,文件操作需注意文件锁,避免同一时刻多个线程修改同一文件,造成数据混乱。 通过以上知识点的综合运用,我们可以构建一个高效、安全的多线程文件传输系统。实际编程中,还需要根据...

    java调用Oracle的锁表命令

    文件`ConnectOracle.java`可能包含了建立JDBC连接的代码。这通常涉及以下步骤: - 导入所需的JDBC库,如`import java.sql.Connection; import java.sql.DriverManager;` - 加载Oracle JDBC驱动,例如`Class.for...

    java文件操作

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

    自己用JAVA做的一个多线程文件服务器

    【标题】:“自己用JAVA做的一个多线程文件服务器” 这篇博客文章主要介绍了一位作者使用Java编程语言构建的多线程文件服务器。在IT行业中,文件服务器是用于存储和管理网络上共享文件的重要组件,而使用Java实现...

Global site tag (gtag.js) - Google Analytics