当FileLock fl = fc.tryLock();执行成功之后,当前虚拟机内其它线程,包括当前操作系统(起码win XP肯定是这样儿的),都无法访问指定的文件
D:\\SOCKET\\server_fa\\test.txt
package com.wlh.filechannel;
import java.io.File;
import java.io.FileReader;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
public class LockFile {
public LockFile() {
}
public static void main(String[] args) throws Exception {
RandomAccessFile raf = new RandomAccessFile(new File("D:\\SOCKET\\server_fa\\test.txt"),"rw");
FileChannel fc = raf.getChannel();
FileLock fl = fc.tryLock();
if (fl.isValid()) {
System.out.println("get the lock!");
//测试线程
new Thread() {
public void run() {
while (true) {
try {
Thread.sleep(100);
FileReader fr = new FileReader(new File(
"D:\\SOCKET\\server_fa\\test.txt"));
int c;
while ((c = fr.read()) != -1) {
System.out.println("OK=" + (char) c);
}
fr.close();
break;
} catch (Exception e) {
System.out.println("error=" + e);
}
}
}
}.start();
//模拟其它操作的耗时:比如用notepad打开无法修改。但是用程序来读写此文件都会异常
raf.write("我刚才被被锁定啦。。。".getBytes());
Thread.sleep(5000);
fl.release();
System.out.println("release the lock!");
}
raf.close();
}
}
分享到:
相关推荐
经过对Flume FileChannel相关源码的分析,导致FileChannel吞吐率下降的主要原因集中于事务的提交过程——commit
使用nio byteBuffer 实现按行读取文件(大文件) 在window/linux/macOS上均测试通过 对于中文乱码也已处理成功 完整注释,可随需求更改 有问题请邮件:mly610865580@126.com
7.1 打开一个FileChannel 7.2 从FileChannel通道中读取数据 7.3 向FileChannel中写入数据: 7.4 关闭FileCha
import java.nio.channels.FileChannel; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import javax.swing.filechooser.FileFilter; 实验...
【IT十八掌徐培成】Java基础第26天-06.FileChannel-RandomAccessFile-CopyFile.zip
在Java编程中,复制文件的方法有很多,而且经常要用到...我以前一直是缓冲输入输出流来实现的(绝大多数人都是如此),近来在研究JDK文档时发现,用文件通道(FileChannel)来实现文件复制竟然比用老方法快了近三分之一
jruby-stdin-channel JRuby Java 扩展 gem,它从 Java System.in stdin 中提取可中断的FileChannel。 使用这个 gem,在阻塞read方法上调用close将解除阻塞,这与普通的 JRuby $stdin 。 使用close转义阻塞读取仅适用...
javaSE 关于IO几种读取方式的性能比较 1.二进制数据 2.字符数据 3.压缩文件
1.1 阻塞 IO 2.3 FileChannel 介绍和示例 2.4 FileChannel 操作详解
使用FileChannel#transferTo而不使用String比较。 安装 可从。 repositories { jcenter() } compile 'net.ypresto.qtfaststartjava:qtfaststart:0.1.0' 执照 MIT许可证。 有关原始源代码的信息 该产品基于qt-
教程内容涵盖:阻塞和非阻塞IO、Channel通道、Buffer缓冲区、Selector选择器、Pipe管道、FileLock文件锁,以及Path、Files、异步FileChannel和Charset字符编码等,并通过一个多人聊天室的综合案例,把所有的NIO知识...
04-Java NIO-Channel-FileChannel(介绍和示例).mp4 05-Java NIO-Channel-FileChannel详解(一).mp4 06-Java NIO-Channel-FileChannel详解(二).mp4 07-Java NIO-Channel-Socket通道-概述.mp4 08-Java NIO-Channel-...
简单几行代码,实现高速coyp文件
FindFirstFile函数功能描述,及改函数的用法,示例代码
H264TrackImpl h264TrackImpl = new H264TrackImpl(new ... FileChannel fChannel = new FileOutputStream(new File("C://a.mp4")).getChannel(); mp4f.writeContainer(fChannel); fChannel.close();
内存文件系统 ... FileChannel AsynchronousFileChannel InputStream OutputStream BasicFileAttributeView , BasicFileAttributes DosFileAttributeView , DosFileAttributes PosixFileAttributeV
05-Java NIO-Channel-FileChannel详解(一).mp4 06-Java NIO-Channel-FileChannel详解(二).mp4 08-Java NIO-Channel-ServerSocketChannel.mp4 09-Java NIO-Channel-SocketChannel.mp4 10-Java NIO-Channel-...
两个通道之间传输数据的方式有两种,分别是:FileChannel 的transferFrom()方法可以将数据从源通道传输到FileChannel中(这个方法在
合并文本代码,读取文件,合并为一个txt public static final int BUFSIZE = 1024 * 8; public static void mergeFiles(String outFile, ArrayList<String> files) { FileChannel outChannel = null; try { ...
大数据 Flume 框架高频面试题 1、Flume组成,Put事务,Take事务 2、Flume拦截器 3、Flume采集数据会丢失吗?(防止数据丢失的机制) ...5、FileChannel优化 6、Flume Channel容量 7、HDFS Sink小文件处理 等等