私はディレクトリを監視してバックアップする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();
}
: は現在、私は、ファイルをロックするために、このコードを使用しています。 ファイルをロックしてもファイルを削除できません。
ロックを解除して削除する必要がありますか?ユーザーがファイルに書き込もうとしていないと信じていますか?それともこれを行う方法は他にありますか?
これはとにかく動作しません。 FileLocksは、ユーザーがファイルを変更または削除するのを妨げません。彼らは他のプログラムがファイルをロックするのを防ぐだけです。 – EJP