Estoy haciendo un programa en Java que supervisa y copia de seguridad de un directorio. De vez en cuando tengo que cargar archivos modificados al repositorio o descargarlos si hay una nueva versión de este. Para hacer esto, tengo que bloquear el archivo para que el usuario no pueda cambiar el contenido o eliminarlo. Actualmente estoy usando el código para bloquear el archivo:Archivo de bloqueo y eliminación
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();
}
Sin embargo, si hay una nueva versión que tengo que borrar el archivo viejo y reemplazarlo por uno nuevo. Pero el bloqueo de archivos no me permite eliminar el archivo.
¿Debo desbloquearlo y borrarlo, escribir, confiando en que el usuario no escriba en el archivo? ¿O hay alguna otra forma de hacer esto?
Esto no funcionará de todos modos. FileLocks no impide que el usuario cambie o elimine el archivo. Solo evitan que otros programas bloqueen el archivo. – EJP