निम्न कोड में:जावा इनपुट स्ट्रीम कितनी करीब है?
DataInputStream in = new DataInputStream(
new BufferedInputStream(new FileInputStream(file)));
in.close();
मैं "शीर्ष स्तरीय" धारा को बंद करने के अलावा 2 अन्य धारा को बंद करने की जरूरत है?
निम्न कोड में:जावा इनपुट स्ट्रीम कितनी करीब है?
DataInputStream in = new DataInputStream(
new BufferedInputStream(new FileInputStream(file)));
in.close();
मैं "शीर्ष स्तरीय" धारा को बंद करने के अलावा 2 अन्य धारा को बंद करने की जरूरत है?
यदि आप DataInputStream
के स्रोत को देखते हैं तो आप देख सकते हैं कि यह अंतर्निहित धाराओं को भी बंद कर देता है। तो आपको जरूरत नहीं है। और यह सभी प्रकार की धाराओं के लिए सच है (या होना चाहिए)।
करज़ी, यह सुझाव देने में सही है। इसके अलावा, बस एक विचार और थोड़ा और अंतर्दृष्टि प्राप्त करने के लिए, जावा आईओ एपीआई वास्तव में सजावटी पैटर्न का उपयोग करके लागू किया गया है। आप विकी पर decorator pattern देख सकते हैं।
मैं एक अपवाद के मामले में यह सुनिश्चित करने के लिए बस अंत में ब्लॉक बंद कर दूंगा।
public void tryToDoWhatever() throws Exception
{
DataInputStream in = null;
try
{
in = new DataInputStream(
new BufferedInputStream(new FileInputStream(file)));
}
finally
{
if (in != null)
in.close();
}
}
हाँ आप सही हैं लेकिन यह एक नया प्रश्न उठाता है: IOException को कैसे संभाला जा सकता है जिसे फेंक दिया जा सकता है अंदर? बंद ?? अंत में ब्लॉक को पकड़ने या इसे ऊपरी स्तर पर आगे बढ़ाने का प्रयास करें? –
हां यह काफी उम्मीद नहीं है मैं आमतौर पर इसे – willcodejavaforfood
@ मैनुअल सेल्वा - मैं हमेशा व्यापार तर्क से अपवाद हैंडलिंग को अलग करता हूं। मेरे पास 'doWhatever()' नामक एक विधि होगी जिसे कोशिश करने के लिए कोशिश की जाती है जो कुछ भी – willcodejavaforfood
मैं इस अवसर का उत्तर उस उत्तर के उत्तर देने के लिए करूंगा जो मैंने पहले ही किया है।
Project Lombok का उपयोग करके आप लंबोक को आपके लिए स्ट्रीम को सही ढंग से बंद कर सकते हैं। विवरण here पाया जा सकता है।
इस बिंदु पर, यह दस्तावेज है। यह थोड़ा विखंडित है, लेकिन 'DataInputStream' को 'फ़िल्टर इनपुट स्ट्रीम' से 'करीबी' प्राप्त होता है, जो दस्तावेज़ों को अंतर्निहित 'इनपुटस्ट्रीम' पर 'करीबी' कहते हैं: http://download.oracle.com/javase/6/docs/api /java/io/FilterInputStream.html तो आप जानते हैं कि व्यवहार केवल एक विशेष कार्यान्वयन का दुष्प्रभाव नहीं है। –
दरअसल यह सभी प्रकार के 'बंद करने योग्य' –
@ शेरविन के लिए सच है ... बशर्ते कि वे "अनुबंध" को सही तरीके से कार्यान्वित करें :-) –