Comme la plupart devraient savoir close()
ferme également toutes les utilisations de flux.Lors de l'utilisation de FileLock de Java, est-ce correct de laisser fermer() pour faire automatiquement un lock.release()?
Cela permet le code de suivi:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(...)));
...
br.close();
C'est agréable, car on n'a pas besoin d'une référence à FileInputStream
et rappelez-vous le fermer.
Mais cela fonctionne aussi pour 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();
}
J'ai essayé ce code et le verrou est libéré correctement lorsque br.close()
est appelé, mais il est est sûr de le faire? Le Closeable JavaDoc dit, "Ferme ce flux et libère toutes les ressources système qui lui sont associées." Suis-je sûr de supposer que j'utilise close()
comme spécifié à release()
la serrure?