下面是编程之家 jb51.cc 通过网络收集整理的代码片段。
编程之家小编现在分享给大家,也给大家做个参考。
参考自StackOverflow上的某个问题以及csdn上的这篇博客:
以独占方式访问某个文件包含自己的一些理解
// 方案1:利用RandomAccessFile的文件操作选项s,s即表示同步锁方式写
RandomAccessFile file = new RandomAccessFile(file,"rws");
// 方案2:利用FileChannel的文件锁
File file = new File("test.txt");
FileInputStream fis = new FileInputStream(file);
FileChannel channel = fis.getChannel();
FileLock fileLock = null;
while(true) {
fileLock = channel.tryLock(0,Long.MAX_VALUE,false); // true表示是共享锁,false则是独享锁定
if(fileLock!=null) break;
else // 有其他线程占据锁
sleep(1000);
}
// 方案3:先将要写的内容写入一个临时文件,然后再将临时文件改名(Hack方案,利用了缓冲+原子操作的原理)
public class MyFile {
private String fileName;
public MyFile(St