Realizzo un programma in java che esegue il monitoraggio e il backup di una directory. Di volta in volta devo caricare i file modificati nel repository o scaricare se c'è una nuova versione di esso. Per fare questo devo bloccare il file in modo che l'utente non sia in grado di modificare il contenuto o cancellarlo. Attualmente sto usando questo codice per bloccare il file:Blocco file ed eliminazione
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();
}
Tuttavia, se c'è una nuova versione devo eliminare il file vecchio e sostituirlo con uno nuovo. Ma il blocco file non mi consente di eliminare il file.
Devo sbloccare ed eliminare scrivere via, credendo che l'utente non scriverà nel file? O c'è un altro modo per farlo?
Questo non funziona comunque. FileLocks non impedisce all'utente di modificare o eliminare il file. Impediscono solo agli altri programmi di bloccare il file. – EJP