正如大多数人应该知道的close()
也关闭任何流使用。使用Java的FileLock时,可以让close()自动执行lock.release()吗?
这使得后续代码:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(...)));
...
br.close();
这是很好的,因为我们并不需要FileInputStream
参考,并记得要关闭它。
但它也适用于FileLock
?
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();
}
我试过这个代码,并锁定正确释放时br.close()
被调用,而是做是安全的呢? Closeable JavaDoc表示,“关闭此流并释放与其关联的所有系统资源。”我可以安全地假设我正在使用close()
指定为release()
的锁吗?