java 文件锁问题

rkily 发布于 2014/06/07 10:53
阅读 1K+
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

因为集群的需要,需要实现对一个共享文件进行“读写”(同时的)加锁,用RandomAccessFile可以实现读写同时锁定,但是在写的时候,只能追加,不能覆盖,我想问下有没有什么办法可以让他变成是覆盖的,或者有没有什么其他的方法,(读写分开的lock不行)
加载中
0
大汉刺史
大汉刺史

使用NIO不就可以了吗。

ByteBuffer buffer=ByteBuffer.allocate(10);
		
		
		buffer.put("abc".getBytes());
		FileChannel channel=new RandomAccessFile("t.bin", "rw").getChannel();//读写模式打开
		
		FileLock fileLock=channel.lock();//获的文件锁定
		
		buffer.position(0);
		
		channel.write(buffer);
		
		//在文件锁release之前都是锁定的。
		//Thread.sleep(100); 
		
		fileLock.release();//释放文件锁定
		
		channel.close();



rkily
rkily
RandomAccessFile raf = new RandomAccessFile(file,"rws")写的时候先raf.seek(0),就可以实现覆盖,不是追加,你说的方法我没试过,不知道行不行,不过谢谢了,回头我试试看
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部