जावा, कई आधुनिक भाषाओं की तरहप्रोग्रामिंग, डेटा प्रविष्टि प्रवाह के कार्यान्वयन का समर्थन करता है जावा में, InputStream बाइट धाराओं के लिए आधार वर्ग है। यह वर्ग अमूर्त है, अर्थात, कार्यक्रम की प्रक्रिया में हम इसका उदाहरण नहीं बना सकते हालांकि, IO पैकेज में, कई वर्ग हैं जो इनुटस्टस्ट्रीम की कार्यक्षमता का विस्तार और विस्तार करते हैं। अपने कोड में इस वर्ग का उपयोग करने के लिए, आपको इसे java.io.InputStream पैकेज से आयात करना होगा। इसके बाद, हम InputStream वर्ग द्वारा प्रदान की गई मूलभूत कार्यक्षमता, साथ ही मुख्य कक्षाओं को भी देखेंगे जो इसे लागू करते हैं।
एक विस्तृत अध्ययन के लिए आगे बढ़ने से पहलेInputStream वर्ग के तरीकों, यह उल्लेख किया जाना चाहिए कि यह लागू करता closeable और AutoCloseable इंटरफेस। इंटरफ़ेस closeable हमें बताता है कि इसके बारे में प्रवाह के साथ काम के पूरा होने पर जरूरी बंद होना चाहिए। यह एक विधि पास का उपयोग किया जाता ()। एक त्रुटि के मामले में InputStream वर्ग तरीकों में से सबसे बाद से एक अपवाद प्रकार IOException, सभी कार्यों को) एक कोशिश ब्लॉक और एक विधि पास (आचरण इतना है कि यह आपरेशन के परिणाम के आधार पर फिसल गया है शरीर की कोशिश करने के अंत में एक इकाई बनाने के लिए आवश्यक उत्पन्न करता है।
ऑटोक्लोसेबल इंटरफ़ेस काफी कम हो जाता हैतकनीकी कोड की मात्रा, क्योंकि यह बंद () विधि स्वचालित रूप से काम करने की अनुमति देता है और अंत में आपके कोड को ब्लॉक नहीं करता है। यदि आप जावा के सातवें या बाद के संस्करण का उपयोग कर रहे हैं, तो आप संसाधनों के साथ एक तथाकथित प्रयास में InputStream को रख सकते हैं, जो सभी समापन कार्यों का ध्यान रखता है।
InputStream वर्ग के मुख्य तरीकों पर विचार करें:
InputStream कई वर्गों द्वारा लागू किया गया है, जो विभिन्न स्रोतों और डेटा प्रकारों के साथ काम करने के लिए डिज़ाइन किया गया है। विरासत का पेड़ नीचे प्रस्तुत किया गया है
फ़ाइलों से जानकारी पढ़ने के लिए बाइट स्ट्रीमFileInputStream वर्ग द्वारा कार्यान्वित बाइट्स पढ़ने के लिए एक फाइल खोलने के लिए, इस क्लास का एक उदाहरण बनाने के लिए पर्याप्त है, कन्स्ट्रक्टर को फाइल के नाम से एक तर्क के रूप में पास करना। यदि दिए गए नाम के साथ फ़ाइल मौजूद नहीं है, तो FileNotFoundException प्रकार का एक अपवाद फेंक दिया जाएगा।
फ़ाइल के एक सफल उद्घाटन के मामले में, ऊपर वर्णित विधियों का उपयोग करके इसके साथ काम किया जाता है, क्योंकि FileInputStream इनपुटस्ट्रीम के उत्तराधिकारी है।
पिछले उदाहरण के साथ काम का वर्णन कियाबाइट मान जिन्हें प्रतीकों के रूप में व्याख्या किया जा सकता है लेकिन क्या होगा अगर हमें एक पूर्णांक, आंशिक या तार्किक मूल्य पढ़ने की आवश्यकता है? ऐसा करने के लिए, जावा इनटस्टस्ट्रीम में अप्रत्यक्ष रूप से डेटाइनपुट स्ट्रीम क्लास द्वारा विस्तारित किया गया है। यह क्लास इनपुटस्ट्रीम के लिए आवरण है, जो उसको दिया जाता है जब इसे कन्स्ट्रक्टर के तर्क के रूप में बनाया जाता है। इस तरह की धारा बाइनरी फॉर्म में डेटा पढ़ती है।
डाटाइंस्टस्ट्रीम भी डेटाइनपुट इंटरफ़ेस और आदिम डेटा प्रकारों को पढ़ने के लिए इसके तरीकों को लागू करता है। नीचे इन विधियों की एक सूची है
विधियों के नाम स्वयं के लिए बोलते हैं - इनमें से प्रत्येक एक निश्चित प्रकार के डेटा को पढ़ने के लिए है।
Buffered डेटा पढ़ा स्ट्रीम लागू किया जाता हैजावा में BufferedInputStream वर्ग इनपुटस्ट्रीम इस वर्ग में लिपटे है। यह वर्ग एक बफर के साथ प्रवाह को पूरक करता है, जो आपको एक बार में एक से अधिक बाइट पढ़ने की अनुमति देता है। इससे ऑपरेशन के प्रदर्शन में काफी सुधार होगा। BufferedInputStream InputStream का एक अप्रत्यक्ष वंशज है, और तदनुसार, उपर्युक्त सभी तरीकों को प्राप्त करता है
इस वर्ग के दो निर्माता हैं:
कन्स्ट्रक्टर के हस्ताक्षर से, आप समझ सकते हैं कि पहले एक डिफ़ॉल्ट रूप से बफर आकार सेट करता है, और दूसरे में यह मैन्युअल रूप से सेट करना संभव होता है
हमने इनपुटस्ट्रीम के बुनियादी कार्यान्वयन को कवर किया है यदि आपको प्राप्त बाइट्स को स्ट्रिंग में कनवर्ट करना है, तो बाद में Java InputStream को स्ट्रिंग (), दुर्भाग्य से, अतिभारित नहीं है, इसलिए इसके लिए आपको विशेष उपयोगिताओं का उपयोग करना होगा, उदाहरण के लिए IOtils अपाचे कॉमन्स लाइब्रेरी से
</ p>