इनपुट धारा कच्चे बाइट्स से निपटती है। जब आप सीधे इनपुट स्ट्रीम से पढ़ते हैं, तो आपको केवल कच्चे बाइट मिलते हैं जहां चरित्र सेट अप्रासंगिक होते हैं।
परिभाषा के अनुसार वर्णों में कच्चे बाइट्स की व्याख्या के लिए कुछ प्रकार के अनुवाद की आवश्यकता होती है: मैं कच्चे बाइट्स से एक पठनीय स्ट्रिंग में कैसे अनुवाद करूं? वह "अनुवाद" एक चरित्र सेट के रूप में आता है।
यह "जोड़ा गया" परत पाठकों द्वारा लागू किया गया है। इसलिए, स्ट्रीम से वर्ण (बाइट्स के बजाए) पढ़ने के लिए, आपको स्ट्रीम के शीर्ष पर किसी प्रकार के Reader
(अपनी आवश्यकताओं के आधार पर) बनाने की आवश्यकता है। उदाहरण के लिए:
InputStream is = ...;
Reader reader = new InputStreamReader(is, Charset.forName("UTF-16"));
यह reader.read()
कारण चरित्र आपके द्वारा निर्दिष्ट सेट का उपयोग कर वर्णों को पढ़ने के होंगे। आप पूरे लाइनों को पढ़ने के लिए चाहते हैं, तो शीर्ष पर BufferedReader
का उपयोग करें: वर्ग यह अनुमति देता है
BufferedReader reader = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-16")));
String line = reader.readLine();
हैं, तो आप एक बाइट स्ट्रीम और चरित्र धारा के बीच की सीमा पर ऐसा कर सकते हैं। (इनपुटस्ट्रीम रीडर एक ऐसा वर्ग है, अन्य पाठक के लिए जो आपको चरित्र सेट निर्दिष्ट करने का विकल्प नहीं देता है, बस इसे इनपुटस्ट्रीम रीडर के आसपास लपेटें)। इनपुटस्ट्रीम (बाइट स्ट्रीम) के स्तर पर कम निर्माण में चरित्र सेट की अवधारणा नहीं है। – nhahtdh