import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
public class FileLockDemo {
/**
* Filelock 防止程序在运行期间,线程在访问文件的过程中修改文件导致Buffer中
* 的部分或者全部内容不可读,造成程序异常。
* 例子中展示的是新开以个线程访问主线程Filelock的文件。
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File file = new File("D://in.txt");
FileOutputStream fis = new FileOutputStream(file);
FileChannel fc = fis.getChannel();
FileLock flock = fc.tryLock();
if(flock.isValid()){
System.out.println(file.getName()+ "is locked");
}
new Thread(){
public void run(){
try{
File file = new File("D://in.txt");
FileOutputStream fi = new FileOutputStream(file);
fi.write('b');
}catch(Exception e){
e.printStackTrace();
}
}
}.run();
flock.release();
System.out.println(file.getName()+ "is released");
fc.close();
fis.close();
}
}
结果是该文件无法被新起的线程访问,运行结果:
in.txtis locked
java.io.IOException: The process cannot access the file because another process has locked a portion of the file
at java.io.FileOutputStream.write(Native Method)
at com.cn.tibco.nio.FileLockDemo$1.run(FileLockDemo.java:32)
at com.cn.tibco.nio.FileLockDemo.main(FileLockDemo.java:37)
in.txtis released
分享到:
相关推荐
在压缩包中的`SDK_Test_One`和`SDK_Test_Two`可能是两个独立的测试项目,它们可能包含了使用`FileLock`的实例代码。而`JavaApk源码说明.txt`可能是关于这些源码的解释或指南,`下载更多打包源码~.url`则可能指向了更...
- **Java**:可以使用`FileLock`或者基于Socket的解决方案来实现。 - **Python**:可以使用`multiprocessing`库中的`Lock`或`Semaphore`,或者文件锁。 4. **多线程与多进程**:在多线程或多进程环境中,单实例...
4. **文件系统API**:包括FileChannel、FileLock等,用于文件的读写和锁定。 5. **管道(Pipes)**:用于两个线程间的数据传输。 描述中提到的"博文链接:https://smallbee.iteye.com/blog/2008119"可能提供了一个...
这种方法的优点是简单易用,但是需要注意的是,`App.PrevInstance`属性仅适用于在同一台计算机上运行的情况,并且只能检测到由同一用户账户启动的实例。如果程序需要在不同用户账户下或者跨计算机的情况下禁止多开,...
单例模式的关键在于私有化构造函数,防止外部直接实例化该类,并提供一个静态方法作为获取实例的唯一入口。以下是一个典型的C#单例模式实现: ```csharp public class Singleton { private static volatile ...
java 文件锁的简单实现 文件锁是指对文件的访问和修改进行控制和限制,以确保文件的安全性和一致性。在 Java 中,可以使用 FileLock 类...通过使用 FileLock 类可以简单地实现文件锁,从而提高文件的隐私性和安全性。
程序首先检查是否有其他实例正在运行,然后允许用户选择语言设置,最后设置应用程序的外观并显示主窗口。此外,还涉及到了日志记录、多线程处理等方面的知识点。这对于学习Java Swing和桌面应用程序开发具有很好的...
10 11文件锁FileLock 10 12Process类中的流 10 13带进度条的输入流 习题 第11章Java网络的基本知识 11 1使用URL 11 2读取URL中的资源 11 3显示URL资源中的HTML文件 11 4处理超链接 11 5InetAdress类 11 6套接字 11 7...
在本篇中,我们将深入探讨这两个主题,并结合具体代码实例来理解它们的用法。 首先,我们来看文件锁定。在Java NIO中,`FileChannel`类提供了文件锁定的功能。通过调用`FileChannel.lock()`方法,我们可以尝试获取...
Java NIO(New Input/Output)是Java标准库中提供的一种I/O模型,与传统的BIO( Blocking I/O)相比,NIO...对于初学者来说,这些源码实例可以帮助理解Java NIO的基本用法和优势,进一步提升在实际项目中的应用能力。
然后创建`CharsetEncoder`和`CharsetDecoder`实例,用于在内存文本与磁盘文件之间转换字符。 8. **文件操作流程**: - 用户点击“打开”菜单项,`fd_load`显示对话框,用户选择文件。 - 使用`RandomAccessFile`...
高级特性如对象序列化流、文件Channel、NIO(非阻塞I/O)和FileLock用于提高并发访问文件的安全性。 2. **设计模式**:设计模式是解决软件设计中常见问题的经验总结,包括单例模式、工厂模式、观察者模式、装饰模式...
11. **FileLock文件锁**:在多线程环境中,FileLock提供了一种机制来独占访问文件,防止多个线程同时修改同一文件。 12. **Process类中的流**:当创建进程时,Process类提供了与子进程通信的输入、输出和错误流,...
在给定的压缩包“FileLock”中,可能包含了一个名为“FileLock”的C#项目,该项目实现了上述的文件加解密功能。你可以导入到Visual Studio 2013环境中运行,通过选择要加密或解密的文本文件,来验证其功能。在实际...
在操作系统中,进程是程序的一次执行实例,每个进程都有自己的内存空间和系统资源。当一个程序运行时,它会创建至少一个进程。在Java中,我们可以使用`java.lang.ProcessBuilder`类来创建和控制新的操作系统进程。 ...
EasyExcel是一款由阿里巴巴开源的Java工具库,专为简单、高效的处理Excel而设计。在Android项目中,虽然EasyExcel原本是为Java Web环境设计的,但通过一些适配和调整,我们依然可以将其应用到Android环境中,实现...
托多 CS2103T软件工程 要求 安装了 Maven 插件的 Eclipse Luna。 JDK 8u20。 学分 Java 日期和时间(Joda-Time - ) JavaFX 托盘图标(Gist by Jewelsea - ) JKeyMaster (Tulskiy - ) ... 单实例(FileLock - )
Java NIO并非简单的输入输出API的替代,而是提供了一种新的I/O模型。传统IO基于流(Stream)进行数据读写,而NIO基于通道(Channel)和缓冲区(Buffer)。NIO的核心特点是它支持非阻塞I/O操作,可以显著提高程序的效率,...
总之,Java中的文件操作和输入输出流构成了强大的工具集,允许开发者灵活地处理各种数据源和目标,无论是简单的文本文件,还是复杂的二进制数据,或是网络通信,都能得心应手。通过熟练掌握这些概念和API,开发者...
在操作系统中,进程是程序的一次执行实例,每个进程都有自己的内存空间,它们之间默认是并行执行且相互独立的。因此,当多个进程同时尝试写入同一个SQLite数据库时,如果没有适当的同步机制,就可能出现数据冲突和不...