我正在用java制作一个程序来监控和备份一个目录。有时我必须将修改后的文件上传到存储库,或者如果有新版本则下载。为此,我必须锁定文件,以便用户无法更改内容或删除它。目前我正在使用此代码锁定文件:
file = new RandomAccessFile("C:\\Temp\\report.txt", "rw");
FileChannel fileChannel = file.getChannel();
fileLock = fileChannel.tryLock();
if (fileLock != null) {
System.out.println("File is locked");
try{
//Do what i need
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
else{
System.out.println("Failed");
}
} catch (FileNotFoundException e) {
System.out.println("Failed");
}finally{
if (fileLock != null){
fileLock.release();
}
但是,如果有新版本,我必须删除旧文件并用新文件替换。但是文件锁定不允许我删除文件。
我应该解锁并删除它,相信用户不会写入文件吗?或者有没有其他方法可以做到这一点?