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新IO】_文件锁笔记032003
java 文件锁的简单实现 文件锁是指对文件的访问和修改进行控制和限制,以确保文件的安全性和一致性。在 Java 中,可以使用 FileLock 类来实现文件锁。下面将详细介绍 Java 文件锁的简单实现。 什么是文件锁 文件...
在Java编程语言中,文件锁是一种用于控制对文件进行并发访问的重要机制。它允许一个或多个进程在同一时间对文件的特定部分进行独占访问,从而防止数据的不一致性。本篇将深入探讨Java中文件锁的实现,以及如何在实际...
只锁一个文件,excel word 自带密码不好用,就试一下这个吧单个文锁,目前我也没找到破解的方法,如果忘记密码的了呵呵呵,上帝保佑,如你知也通知我一下吧 ths
在给定的压缩包文件中,我们关注的是"FastCopyFile.java"、"UseFloatBuffer.java"以及NIO中的文件锁功能。 首先,让我们详细了解一下`FastCopyFile.java`。这个文件很可能是一个示例程序,演示了如何使用Java NIO...
7. **同步写入**:如果多线程环境需要同时写入文件,可以考虑使用FileChannel的锁机制,以防止数据交错。 8. **字符编码**:默认情况下,FileWriter使用平台默认编码。如果需要指定特定编码,可以使用`new ...
当然,实际应用中可能需要考虑更多因素,如错误处理、文件锁、并发访问等。在大型项目中,你可能会选择使用Apache Commons IO库或Java 8的Stream API来简化文件操作。 总的来说,“简单java文件过滤”涉及了Java中...
Java 多线程之并发锁 Java 中的多线程编程是指在一个程序中同时运行多个线程,以提高程序的执行效率和响应速度。在多线程编程中,线程间的同步是非常重要的,因为不同的线程可能会同时访问同一个共享资源,导致数据...
本文将深入探讨如何使用Redisson和Curator框架来实现Java环境中的分布式锁。 首先,让我们来看一下Redisson实现的分布式锁。Redis是一个高性能的键值数据库,常被用作分布式系统的缓存或数据存储。Redisson是基于...
java 读取 XML 使用 xml 。。。。。。。。。。。
Java的`java.util.concurrent`包提供了锁和同步原语,如`synchronized`关键字、`ReentrantLock`和`Semaphore`,用于管理并发访问。 7. **文件系统设计**:一个完整的文件系统需要考虑目录结构、文件命名规则、文件...
例如,如果文件正在被其他进程使用,可能需要实现锁机制。同时,确保在处理文件后正确关闭输入/输出流,以防止资源泄露。 总结起来,Java提供了丰富的API来处理文件操作,包括分割大文件。通过结合`FileInputStream...
该项目旨在实现h5与fastdfs之间的高性能断点续传、秒传、大文件上传以及使用redis文件锁。系统提供了文件上传、文件处理、文件存储等功能。通过该项目,开发者可以学习并实践Java技术的应用,为后续的Web开发奠定...
在Java编程环境中,加密锁(通常称为硬件保护锁或安全密钥)是一种物理设备,用于保护软件不被非法复制和使用。加密锁通常通过USB接口连接到计算机,它包含一个微处理器,可以执行复杂的加密算法,确保只有授权的...
- 为了保证操作的原子性,可以考虑在处理过程中使用文件锁,以防止在压缩过程中文件被其他进程修改。 - 如果ZIP文件非常大,解压和再压缩的过程可能会消耗大量时间和资源,因此在处理大数据量时需要谨慎设计。 6....
这里需要注意文件锁的管理,以防止并发上传时的文件冲突。 对于断点续传,`plupload`会在客户端保存上传进度,如果上传中断,用户可以继续未完成的上传,服务器端需要有相应的机制识别并处理这些续传请求。这通常...
10. **安全性**:在多线程环境下,文件操作需注意文件锁,避免同一时刻多个线程修改同一文件,造成数据混乱。 通过以上知识点的综合运用,我们可以构建一个高效、安全的多线程文件传输系统。实际编程中,还需要根据...
文件`ConnectOracle.java`可能包含了建立JDBC连接的代码。这通常涉及以下步骤: - 导入所需的JDBC库,如`import java.sql.Connection; import java.sql.DriverManager;` - 加载Oracle JDBC驱动,例如`Class.for...
很久以前的工具类代码不过很实用,java的文件读写创建目录复制,移动,文件序列化,反序列化,文件锁,xml文件的读取,诸多内容囊括其中注释也十分详细,学习文件流的不二选择
【标题】:“自己用JAVA做的一个多线程文件服务器” 这篇博客文章主要介绍了一位作者使用Java编程语言构建的多线程文件服务器。在IT行业中,文件服务器是用于存储和管理网络上共享文件的重要组件,而使用Java实现...