FileInputStream को InputStream में कैसे कन्वर्ट करें? [बन्द है]


116

मैं सिर्फ एक कन्वर्ट करना चाहते हैं FileInputStream को एक मेंInputStream , मैं यह कैसे कर सकता हूं?

जैसे

FileInputStream fis = new FileInputStream("c://filename");
InputStream is = ?; 
fis.close();

3
रंजन। क्या आप कृपया इस पोस्ट का सही उत्तर बदल सकते हैं। वर्तमान उत्तर सबपर है। यदि आप इसे नीचे वाले को बदल देते हैं जो कि इष्टतम होगा।
व्हिटेकैट

यह सिर्फ एक मूर्खतापूर्ण सवाल .. मैं क्रमबद्धता के बारे में उचित विचार नहीं किया गया था गया था ... किसी भी एक @sudocode का उल्लेख कर सकते
रंजन

4
यह शायद एक मूर्खतापूर्ण सवाल है लेकिन बहुत से लोग अभी भी इस सवाल का संदर्भ देते हैं क्योंकि यह उपयोगी है।
व्हिटेकैट

1
@WilliMentzel मैं यहाँ Fileकक्षा से वास्तविक रूपांतरण की खोज में आया था InputStream। आपका संपादन बताता है कि लेखक क्या कह रहा है (कम से कम आंशिक रूप से), और यह सही नहीं है।
रेखा

@ मुझे केवल स्वरूपण बदल दिया गया है मुझे नहीं लगता कि मैंने इसका अर्थ बदल दिया है। यदि आप अभी भी आपत्ति करते हैं, तो मेरे परिवर्तनों को रोलबैक करने के लिए स्वतंत्र महसूस करें इसके बाद समुदाय द्वारा समीक्षा की जाएगी। वैसे: आप कैसे जानते हैं कि लेखक का क्या मतलब है सिवाय इसके कि सवाल अब क्या है?
विली मेंजेल

जवाबों:


7

आप आमतौर पर पहले इनपुट स्ट्रीम से पढ़ते हैं और फिर उसे बंद कर देते हैं। आप FileInputStream को अन्य InputStream (या रीडर) में लपेट सकते हैं। रैपिंग स्ट्रीम / रीडर को बंद करने पर यह अपने आप बंद हो जाएगा।

यदि यह कॉलर को एक इनपुटस्ट्रीम वापस करने वाली एक विधि है, तो इसके साथ समाप्त होने पर स्ट्रीम को बंद करना कॉलर की जिम्मेदारी है। यदि आप इसे अपनी विधि में बंद करते हैं, तो कॉलर इसका उपयोग करने में सक्षम नहीं होगा।

आपकी कुछ टिप्पणियों का जवाब देने के लिए ...

इनपुटस्ट्रीम को दूरस्थ उपभोक्ता को भेजने के लिए, आप इनपुटस्ट्रीम की सामग्री को आउटपुटस्ट्रीम में लिखेंगे, और फिर दोनों स्ट्रीम को बंद कर देंगे।

दूरस्थ उपभोक्ता आपके द्वारा बनाई गई स्ट्रीम ऑब्जेक्ट के बारे में कुछ भी नहीं जानता है। वह केवल एक इनपुटस्ट्रीम में सामग्री प्राप्त करता है, जिसे वह बनाएगा, पढ़ेगा और बंद करेगा।


क्या होगा अगर मैं मेल पर एक इनपुटस्ट्रीम भेजना चाहता हूं। .. क्या दूसरी तरफ बंद करना संभव है .. या इसे बंद करने की आवश्यकता नहीं है
रंजन

2
स्ट्रीम ऑब्जेक्ट अपने आप में अनुक्रमणीय नहीं है। धारा की सामग्री को धारावाहिक रूप दिया जा सकता है - एक
आउटपुटस्ट्रीम में

वास्तव में मेरा उद्देश्य एक फ़ाइल भेजना है .. मैं एक बार भेजने के बाद कुछ भी नहीं चाहता हूं .. जैसे कि मैं एक स्ट्रिंग भेज रहा हूं .. ताकि दूसरे पक्ष को कुछ भी बंद करने के बारे में चिंता करने की आवश्यकता न हो।
रंजन

1
फ़ाइल क्रमबद्ध नहीं है। लेकिन किसी OutputStream के उपयोग से फ़ाइल की सामग्री को क्रमबद्ध किया जा सकता है।
सूडोकोड

क्या यह संभव है कि मैं कुछ विशिष्ट समय की प्रतीक्षा करूं और फिर इनपुटस्ट्रीम को बंद कर दूं, जैसे फ़ाइल के आकार के आधार पर
रंजन

136
InputStream is;

try {
    is = new FileInputStream("c://filename");

    is.close(); 
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

return is;

12
"Is.close ()" को "लौटाए जाने से पहले" क्यों कहा जाता है, अंत में लौटा दिया जाता है।
तलस्पिन_किट


36

FileInputStream है एक InputStream।

FileInputStream fis = new FileInputStream("c://filename");
InputStream is = fis;
fis.close();  
return is;

बेशक, यह वह नहीं करेगा जो आप इसे करना चाहते हैं ; जिस स्ट्रीम पर आप लौटते हैं, वह पहले ही बंद हो चुकी है। बस FileInputStream को वापस करें और उसके साथ किया जाए। कॉलिंग कोड इसे बंद करना चाहिए।


या बस वापस fisहालांकि मैं एक बंद धारा लौटने के बारे में निश्चित नहीं हूं।
बाला आर

6
यह बेवकूफी है - यदि आप पास हैं fis- आप भी बंद कर देते हैंis
रॉन

1
अगर मैं फ़ाइल डेटा बंद नहीं करता हूँ
रंजन

2
@ रोनक वास्तव में। इसलिए मैं इसका उल्लेख करता हूं।
जोएरी हेंड्रिकक्स

3
return FileInputStream("c://filename");इस विधि का सिर्फ एक संक्षिप्त कोड है जिसका रिटर्न प्रकार हैInputStream
यतेंद्र गोएल

2

यदि आप एक धारा को दूसरे में लपेटते हैं, तो आप मध्यवर्ती धाराओं को बंद नहीं करते हैं, और बहुत महत्वपूर्ण: आप बाहरी धाराओं का उपयोग करने से पहले उन्हें बंद नहीं करते हैं। क्योंकि आप बाहरी धारा को भी बंद कर देंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.