2010-12-06 16 views
63

रीडर और इनपुटस्ट्रीम के बीच क्या अंतर है? और कब उपयोग करें? यदि मैं पाठकों को पढ़ने के लिए रीडर का उपयोग कर सकता हूं तो मैं इनपुटस्ट्रीम का उपयोग क्यों करूंगा, मुझे लगता है कि ऑब्जेक्ट्स पढ़ने के लिए?रीडर और इनपुटस्ट्रीम के बीच क्या अंतर है?

+1

"मुझे वस्तुओं को पढ़ने का अनुमान है?" के बारे में, जावा ऑब्जेक्ट्स पढ़ने/लिखने के लिए विशेष इनपुट/आउटपुट स्ट्रीम हैं। वे क्रमशः ऑब्जेक्ट इनपुटपुट और ऑब्जेक्टऑटपुटस्ट्रीम हैं, और बड़े क्रमबद्ध ढांचे का हिस्सा हैं। http://java.sun.com/developer/technicalArticles/Programming/serialization/ लेकिन इनपुट/आउटपुट स्ट्रीम का केवल एक ही उपयोग है, अन्य सॉकेट पर डेटा भेज सकते हैं, आदि –

उत्तर

93

एक इनपुटस्ट्रीम संसाधन से जानकारी प्राप्त करने का कच्चा तरीका है। यह किसी भी तरह के अनुवाद किए बिना बाइट द्वारा डेटा बाइट पकड़ लेता है। यदि आप छवि डेटा, या किसी भी बाइनरी फ़ाइल को पढ़ रहे हैं, तो यह उपयोग करने के लिए स्ट्रीम है।

एक पाठक चरित्र धाराओं के लिए डिज़ाइन किया गया है। यदि आप जो जानकारी पढ़ रहे हैं वह सभी पाठ है, तो पाठक आपके लिए चरित्र डिकोडिंग का ख्याल रखेगा और आपको कच्चे इनपुट स्ट्रीम से यूनिकोड वर्ण देगा। यदि आप किसी भी प्रकार का टेक्स्ट पढ़ रहे हैं, तो यह उपयोग करने के लिए स्ट्रीम है।

आप इनपुट इनपुट को लपेट सकते हैं और इनपुटस्ट्रीम रीडर क्लास का उपयोग कर इसे रीडर में बदल सकते हैं।

Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); 
1

एक बाइट स्वीकार करता है और दूसरा अक्षर स्वीकार करता है।

12

इनपुटस्ट्रीम का उपयोग स्ट्रीम से बाइट पढ़ने के लिए किया जाता है। इसलिए वे छवियों, वीडियो और क्रमबद्ध वस्तुओं जैसे बाइनरी डेटा के लिए उपयोगी हैं।

दूसरी ओर पाठक चरित्र धाराएं हैं ताकि वे चरित्र डेटा को पढ़ने के लिए सबसे अच्छी तरह से उपयोग किए जा सकें।

+0

'read() 'बाइट का उपयोग कब करें बाइट द्वारा और बाइट के 'रीड (बाइट [])' सरणी का उपयोग कब करें। जैसा कि मुझे लगता है कि रीडिंग सरणी हमेशा बेहतर होती है। तो क्या आप मुझे उदाहरण दे सकते हैं कि बाइट द्वारा 'read() 'बाइट या बाइट द्वारा' read (byte []) 'सरणी का उपयोग करें। या 'BufferedInputStream'।? – UnKnown

0

मुझे लगता है कि भ्रम का स्रोत InputStream.read() देता है कि एक int और Reader.read() भी एक int देता है।

अंतर यह है कि 0 और 255 के बीच InputStream.read() वापसी बाइट मूल्यों बाइट धारा के कच्चे सामग्री के लिए इसी और Reader.read() चरित्र मूल्य जो है एक InputStream 0 और 65,357

के बीच आप पढ़ सकते हैं सामग्री से बाइट की सुविधा देता है वापसी है बाइट, उदाहरण के लिए सामग्री "ए ‡ ए" को 97, 226, 128, 161, 9 7 के रूप में पढ़ा जाता है जहां a -> U+0061 -> 0x61 -> 97 और ‡ -> U+2021 -> 0xE280A1 (utf-8 encoding of 0x2021) -> 226 128 161

एक Reader आप चरित्र से सामग्री चरित्र को पढ़ने की सुविधा देता है तो सामग्री "एक ‡ एक" के रूप में 97, 8225, 97, जहां a -> U+0061 -> 0x61 -> 97 और ‡ -> U+2021 -> 0x2021 -> 8225 पढ़े जाते हैं।

संबंधित मुद्दे