"हॅलो, अमिगो! तुम्ही बफरेडरीडर आणि इनपुटस्ट्रीमरीडर क्लासेस बर्याच काळापासून वापरत आहात . आता ते प्रत्यक्षात काय करतात ते शोधूया."

InputStreamReader क्लास हा InputStream इंटरफेसपासून रीडर इंटरफेसपर्यंतचा क्लासिक अडॅप्टर आहे . येथे जोडण्यासाठी काहीही नाही.

पण थोडक्यात, हेच घडते. जेव्हा तुम्ही InputStreamReader ऑब्जेक्टवरून पुढील वर्णाची विनंती (वाचा) करता , तेव्हा ते Constructor ला दिलेल्या InputStream मधील काही बाइट्स वाचते आणि त्यांना एक वर्ण म्हणून परत करते.

परंतु रीडर हे काम करण्यासाठी सर्वात सोयीस्कर वस्तू नाही. बर्‍याचदा आपल्याला वापरकर्त्याने प्रविष्ट केलेली सर्व वर्ण एकाच वेळी वाचण्याची गरज नाही, तर या वर्णांना ओळींमध्ये विभाजित करणे आवश्यक आहे.

"पण वाचक वर्गाकडे रीड (CharBuffer s) पद्धत आहे. ती आपण वापरू शकत नाही का?"

"ही पद्धत बफरच्या आकारात डेटा वाचते आणि चारबफर ऑब्जेक्टमध्ये ठेवते."

मजकूर सहसा ओळींमध्ये विभागलेला असतो. त्यामुळे read(CharBuffers) पद्धत एकाच वेळी अनेक ओळी वाचू शकते. जर आपल्याला ओळीच्या शेवटपर्यंत मजकूर वाचायचा असेल (म्हणजे नवीन ओळीच्या अक्षरापर्यंत ओळीतील सर्व वर्ण), तर दुसरे काहीतरी शोधणे चांगले होईल. आणि एक पर्यायी पद्धत अस्तित्वात आहे. BufferedReader वर्गात .

BufferedReader क्लास, जो Reader च्या वर एक सोयीस्कर रचना आहे, मध्ये एक अतिशय सोयीची पद्धत आहे: readLine () . ही पद्धत आपल्याला वाचकांकडून एकाच वेळी संपूर्ण मजकूर वाचू देते. जेव्हा तुम्ही तुमच्या कोडमध्ये रीडलाइनला कॉल करता, तेव्हा ते रीडर ऑब्जेक्टमधील कॅरेक्टर्स वाचते जोपर्यंत नवीन लाइन कॅरेक्टर समोर येत नाही. एकदा नवीन ओळ वर्ण आल्यावर, पद्धत या वर्णांना एकाच स्ट्रिंगमध्ये चिकटवते आणि ते परत करते.

"मी हे नियमितपणे वापरले आहे, पण ते कसे कार्य करते हे मला माहित नव्हते. आता मला माहित आहे. धन्यवाद, किम."