Java跨进程锁定文件(即OS级别的锁定文件),需要使用排它的锁,需要使用FileOutputStream或者RandomAccessFile(这里指"rw"模式)。
fos=new FileOutputStream(fileFullPath);
while(true){
try{
lock=fos.getChannel().lock();
break;
}catch(OverlappingFileLockException e1){
Thread.sleep(2000);
}
}
raf=new RandomAccessFile("test.txt",“rw”);
while(true){
try{
fileLock=raf.getChannel().lock();
break;
}catch(OverlappingFileLockException ofle){
Thread.sleep(1000);
}
}
再说类FileInputStream和模式为"r"的RandomAccessFile,他们都有channel和FileLock操作,但是经过测试,会报错NonWritableChannelException。例如:
fis=new FileInputStream(fileFullPath);
while(true){
try{
lock=fis.getChannel().lock