ディレクトリを監視およびバックアップするプログラムを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();
}
ただし、新しいバージョンがある場合は、古いファイルを削除して新しいファイルに置き換える必要があります。しかし、ファイルロックではファイルを削除できません。
ユーザーがファイルに書き込まないことを信頼して、ロックを解除して書き込みを削除する必要がありますか? または、これを行う他の方法はありますか?