正如大多數人應該知道的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()
的鎖嗎?