Çoğu, close()
'un bildiği gibi, akışları da kullanır.Java'nın FileLock'ını kullanırken, close() işlevinin otomatik olarak bir lock.release() yapmasını sağlamak tamam mı?
Bu takip kodunu verir: Biz FileInputStream
bir başvuru ihtiyaç ve kapatmak hatırlamıyorum beri
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(...)));
...
br.close();
Bu, güzel.
Ama aynı zamanda FileLock
s için çalışıyor mu?
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();
}
Bu kodu denedim ve kilit düzgün br.close()
çağrıldığında serbest bırakılır, ama bunu yapmak için güvenlidir? Closeable JavaDoc, "Bu akışı kapatır ve ilişkili tüm sistem kaynaklarını serbest bırakır." numaralı kilidin, release()
numaralı kilidi belirtildiği gibi kullanacağımı farz etmem gerekir mi?