बफर:
यह एक भौतिक मेमोरी स्टोरेज का एक क्षेत्र है जिसका उपयोग अस्थायी रूप से डेटा को स्टोर करने के लिए किया जाता है जबकि इसे एक स्थान से दूसरे स्थान पर ले जाया जा रहा है। यही कारण है कि भौतिक स्मृति भंडारण होगा रैम (रैंडम एक्सेस मेमोरी) ज्यादातर मामलों में।
लेकिन इस प्रश्न के संदर्भ से, डेटा पढ़ने / लिखने के दौरान बफर का उपयोग किया जाता है। एक स्थान से दूसरे स्थान पर डेटा ले जाते समय इसका उपयोग नहीं किया जाना चाहिए।
बफ़र के लिए उदाहरण: यदि आपके सिस्टम में 4 GB RAM है, तो सिस्टम द्वारा बफ़र के लिए 4 KB मेमोरी (RAM) आवंटित की जा सकती है। KB - किलोबाइट (s), GB - गीगाबाइट (s)
I / O स्ट्रीम (या) स्ट्रीम:
I / O स्ट्रीम एक इनपुट स्रोत या आउटपुट गंतव्य का प्रतिनिधित्व करता है। एक स्ट्रीम डिस्क फ़ाइलों, उपकरणों, अन्य कार्यक्रमों और मेमोरी सरणियों सहित कई विभिन्न प्रकार के स्रोतों और गंतव्यों का प्रतिनिधित्व कर सकती है।
I / O का अर्थ है इनपुट / आउटपुट।
तो, इनपुट स्ट्रीम एक इनपुट स्रोत हो सकता है जैसे डिस्क फ़ाइल, नेटवर्क कनेक्शन आदि।
और, आउटपुट स्ट्रीम डिस्क फ़ाइल, नेटवर्क कनेक्शन आदि जैसे आउटपुट गंतव्य हो सकते हैं।
जावा आधिकारिक दस्तावेज के अनुसार , धाराएँ 3 प्रकार की होती हैं।
- बाइट स्ट्रीम (बाइट्स पढ़ें या लिखें)
- चरित्र धाराएँ ( वर्ण पढ़ें या लिखें)
- बफर स्ट्रीम ( दक्षता के लिए बफ़र से पढ़ें या लिखें )
बाइट स्ट्रीम:
वे 8-बिट बाइट्स का इनपुट और आउटपुट करते हैं। सभी बाइट स्ट्रीम कक्षाएं इनपुटस्ट्रीम और आउटपुटस्ट्रीम से नीचे उतारी जाती हैं ।
बाइट इनपुट स्ट्रीम कक्षाएं कच्चे बाइट्स के रूप में इनपुट प्राप्त करती हैं । बाइट आउटपुट स्ट्रीम कक्षाएं कच्चे बाइट्स के रूप में आउटपुट देती हैं ।
InputStream
- प्रत्यक्ष ज्ञात उपवर्ग
AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream.
OutputStream
- प्रत्यक्ष ज्ञात उपवर्ग
ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream
चरित्र धाराएँ:
वे बाइट धाराओं के ऊपर एक परत हैं। वे वर्णों और वर्णों को बाइट्स में बाइट्स (बाइनरी डेटा) में परिवर्तित करते हैं, वर्ण एन्कोडिंग का उपयोग करके।
सभी चरित्र स्ट्रीम क्लासेस को रीडर और राइटर से उतारा जाता है ।
Reader
- प्रत्यक्ष ज्ञात उपवर्ग
BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader
Writer
- प्रत्यक्ष ज्ञात उपवर्ग
BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter
बाइट स्ट्रीम्स और कैरेक्टर स्ट्रीम्स अनबफर्ड I / O का उपयोग करते हैं ।
इसका अर्थ है कि प्रत्येक पढ़ा या लिखा गया अनुरोध अंतर्निहित ओएस द्वारा सीधे नियंत्रित किया जाता है। यह एक प्रोग्राम को बहुत कम कुशल बना सकता है, क्योंकि इस तरह के प्रत्येक अनुरोध अक्सर डिस्क एक्सेस, नेटवर्क गतिविधि, या कुछ अन्य ऑपरेशन को ट्रिगर करता है जो अपेक्षाकृत महंगा है। इस तरह के ओवरहेड को कम करने के लिए, जावा प्लेटफॉर्म के कार्यान्वयन ने I / O स्ट्रीम को बफ़र किया।
बफर स्ट्रीम:
बफर इनपुट धाराएँ बफर के रूप में ज्ञात मेमोरी क्षेत्र से डेटा पढ़ती हैं ; मूल इनपुट API केवल तभी कहा जाता है जब बफर खाली हो।
इसी तरह, बफर आउटपुट स्ट्रीम डेटा को एक बफर में लिखते हैं , और देशी आउटपुट एपीआई को केवल तभी कहा जाता है जब बफर भरा हुआ हो।
एक प्रोग्राम एक अपरिवर्तित स्ट्रीम को रैपिंग मुहावर का उपयोग करके एक बफ़र स्ट्रीम में परिवर्तित कर सकता है , जहां एक अनफ़र स्ट्रीम स्ट्रीम ऑब्जेक्ट को बफ़र्ड स्ट्रीम क्लास के लिए कंस्ट्रक्टर को पास किया जाता है ।
उदाहरण:
inputStream = new BufferedReader(new FileReader("xanadu.txt"));
outputStream = new BufferedWriter(new FileWriter("characteroutput.txt"));
4 बफ़रड स्ट्रीम क्लास हैं जिनका उपयोग अनफ़रवर्ड स्ट्रीम को लपेटने के लिए किया जाता है:
बफर बाइट स्ट्रीम बनाने के लिए, BufferedInputStream
और BufferedOutputStream
कक्षाएं।
बफ़र किए गए चरित्र स्ट्रीम बनाने के लिए, BufferedReader
और BufferedWriter
कक्षाएं।