Artículos
Java

Bloquear un fichero con Java

16/Sep/2012

Si estamos trabajando con ficheros en Java es posible que tengamos la necesidad de mantener consistente la información que contiene alguno de ellos. Para ello, una solución puede pasar por realizar un bloqueo lógico de un fichero. Es decir, marcar al fichero como bloqueado, para que el resto de procesos sepan que no deben tocar su contenido para mantenerlo consistente. Así que vamos a ver cómo podemos bloquear un fichero con Java.

Lo primero que haremos para bloquear un fichero con Java será obtener una referencia sobre el fichero mediante una clase File:

File file = new File("test.txt");

Para acceder al fichero vamos a utilizar la clase RandomAccessFile en formato lectura y escritura. Y sobre ese objeto vamos a recuperar su canal de acceso mediante el método .getChannel().

FileChannel channel = new RandomAccessFile(file, "rw").getChannel();

Lo que manejamos en este momento es un objeto del tipo FileChannel. Un canal en Java es la evolución de un Stream normal de datos. El caso del FileChannel se representa una conexión abierta sobre un recurso sobre la cual se pueden realizar múltiples operaciones. Una de las operaciones que podemos realizar sobre el canal es bloquearlo o liberarlo.

Así, si queremos bloquear un fichero con Java, lo que hacemos es bloquear el canal mediante el método .lock().

FileLock lock = channel.lock();

Lo que obtenemos en este caso es un objeto FileLock. Este objeto será el que nos sirva para chequear el estado del canal/fichero antes de acceder a él. Si queremos ver si el fichero está bloqueado utilizamos el método tryLock() que devolverá una excepción OverlappingFileLockException en el caso de que haya un bloqueo.

try {
  lock = channel.tryLock();
} catch (OverlappingFileLockException e) {  }

También tenemos que saber que para liberar el bloqueo del fichero tenemos el método .release()

lock.release();

Lo último que deberemos de hacer a la hora de bloquear un fichero con Java es cerrar el canal sobre el fichero con el método .close()

channel.close();

Con estas pequeñas líneas de código hemos podido bloquear un fichero con Java..

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Suscribir
Notificar de
guest
1 Comentario
Recientes
Anteriores Más votados
Opiniones integradas
Ver todos los comentarios