जैसा कि सबसे अधिक पता होना चाहिए close()
किसी भी स्ट्रीम का उपयोग बंद करता है।जावा के फ़ाइल लॉक का उपयोग करते समय, क्या बंद() को स्वचालित रूप से लॉक करने के लिए बंद करना है। कृपया()?
यह अनुवर्ती कोड की अनुमति देता है:
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()
लॉक पर निर्दिष्ट है?