मैं एक जावा विधि बना रहा हूं जो एक तर्क के रूप में एक InputStream
स्वीकार करता है। एक अक्षर आधारित धारा के साथ काम करने की सुविधा के लिए, मैं विधि कार्यान्वयन के शुरू में प्रदान की InputStream
लपेट इस प्रकार है:मैं अपनी विधि में पास इनपुट इनपुट को बंद करने से कैसे बचूं जो मैं रीडर स्ट्रीम में लपेटता हूं?
public void doStuff(InputStream inStream) {
BufferedReader reader = new BufferedReader(new InputStreamReader(inStream));
...
}
InputStream
(inStream
) के बाद से मेरी विधि को पारित कर दिया है, मुझे नहीं पता इसे बंद करना चाहते हैं ... जैसा कि मुझे लगता है कि मेरी विधि को कॉल करने वाले क्लाइंट की ज़िम्मेदारी होनी चाहिए (क्या यह धारणा सही है?)। हालांकि, मुझे लगता है कि मुझे बनाया गया BufferedReader
बंद करना चाहिए; लेकिन ऐसा करने में, मेरा मानना है कि यह inStream
समेत अन्य सभी रचनाकृत धाराओं को स्वचालित रूप से बंद कर देगा।
क्या कोई मुझे BufferedReader
और InputStreamReader
को बंद करने का कोई तरीका देखता है जिसे मैंने InputStream
को मेरे तरीके से पास नहीं किया है, जबकि मैंने बनाया है? शायद इसे लपेटने से पहले प्रदान किए गए InputStream
की एक प्रति बनाने का कोई तरीका है? धन्यवाद
आप जानते हैं कि अनचाहे स्ट्रीम बहुत बेकार होगी? –
आपको इसे अनदेखा करने और प्लेटफ़ॉर्म डिफ़ॉल्ट को उपयोग करने के बजाय 'इनपुटस्ट्रीम रीडर' बनाने के दौरान एक विशिष्ट 'वर्णसेट' की आपूर्ति करनी चाहिए। – ColinD
टॉम, क्या आप स्पष्ट करेंगे कि "अनचाहे स्ट्रीम" से आपका क्या मतलब है? – user389591