正如大多数人应该知道的那样,close()
也关闭了任何流使用。
这允许以下代码:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(...)));
...
br.close();
这很好,因为我们不需要引用FileInputStream
并记得关闭它。
但它也适用于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();
}
我已经尝试过这段代码,并且在br.close()
调用时锁被正确释放,但是这样做安全吗?Closeable JavaDoc说:“关闭此流并释放与之关联的任何系统资源。” 我可以安全地假设我按照锁close()
的规定使用吗?release()