Como la mayoría debería saber, close()
también cierra los usos de secuencias.Al usar el FileLock de Java, ¿está bien dejar que close() haga automáticamente un lock.release()?
Esto permite que el código de seguimiento:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(...)));
...
br.close();
Esto es bueno, ya que no necesitamos una referencia a FileInputStream
y recordar para cerrarla.
¿Pero también funciona para FileLock
s?
final FileInputStream fis = new FileInputStream(new File("buffer.txt"));
final FileChannel c = fis.getChannel();
final FileLock lock = c.lock(0L, Long.MAX_VALUE, true);
final BufferedReader br = new BufferedReader(new InputStreamReader(fis));
try {
while(br.ready()) {
System.out.println(br.readLine());
}
} finally {
br.close();
}
He probado este código y el bloqueo se libera correctamente cuando br.close()
se llama, pero se es seguro hacerlo? El Closeable JavaDoc dice, "Cierra esta secuencia y libera los recursos del sistema asociados con ella". ¿Puedo suponer que estoy usando close()
como se especifica en release()
el bloqueo?