2012-05-30 10 views
6

क्या कोई मुझे OutputStream और OutputWriter के बीच अंतर बता सकता है? मुझे इनमें से किन वर्गों के साथ काम करना चाहिए? जहां लेखक के रूप में कक्षाएं, चरित्र से लक्ष्य चरित्र के लिए लिखते हैंआउटपुटस्ट्रीम और आउटपुटवाइटर के बीच क्या अंतर है?

+4

इस पर करीबी वोट नहीं मिल रहा है। असली जवाब के साथ यह एक असली सवाल है। –

+1

मेरा करीबी वोट इसलिए है क्योंकि असली जवाब जावाडोक में है, जहां ओपी को पहले देखना चाहिए था, इसलिए सवाल का कोई स्थायी मूल्य नहीं है। – EJP

उत्तर

11

स्ट्रीम बाइट स्तर पर काम करते हैं, वे पढ़ सकते हैं (InputStream) और एक स्ट्रीम में बाइट्स या बाइट्स की सूची (OutputStream) लिखें।

पाठक/लेखक एक धारा के शीर्ष पर चरित्र की अवधारणा को जोड़ते हैं। चूंकि एक चरित्र को केवल एन्कोडिंग का उपयोग करके बाइट्स में अनुवाद किया जा सकता है, पाठकों और लेखकों के पास एक एन्कोडिंग घटक होता है (जिसे जावा स्वचालित रूप से डिफ़ॉल्ट एन्कोडिंग प्रॉपर्टी के बाद सेट किया जा सकता है)। वर्ण पढ़ते हैं (Reader) या लिखित (Writer) स्वचालित रूप से एन्कोडिंग द्वारा बाइट में परिवर्तित हो जाते हैं और स्ट्रीम को भेजे जाते हैं।

7

OutputStream कक्षाएं बाइट द्वारा लक्ष्य बाइट के लिए लिखता है।

+3

यह ध्यान देने योग्य है कि जावा में 'वर्ण' एक गलत नाम है, क्योंकि यह वास्तव में एक यूटीएफ -16 [कोड यूनिट] (http://unicode.org/glossary/#code_unit) का प्रतिनिधित्व करता है, न कि यूनिकोड [कैरेक्टर] (http : //unicode.org/glossary/#character) या [कोड प्वाइंट] (http://unicode.org/glossary/#code_point)। –

0

OutputStream नंगे बाइट्स का उपयोग करता Writerइनकोडिंग वर्णों का उपयोग करता है, जबकि

+1

वास्तव में एक 'लेखक' यूटीएफ -16 [कोड इकाइयों] का उपयोग करता है (http://unicode.org/glossary/#code_unit), और [एनकोडेड वर्ण] (http://unicode.org/glossary/#encoded_character) –

2

एक OutputStream एक ऐसी स्ट्रीम है जो जानकारी लिख सकती है। यह काफी सामान्य है, इसलिए फाइलों को लिखने जैसे विशेष उद्देश्यों के लिए OutputStream विशिष्ट हैं। एक धारा केवल बाइट्स के सरणी लिख सकती है।

Writer एस अधिक लचीलापन प्रदान करता है कि वे विशेष एन्कोडिंग खाते में अक्षर और यहां तक ​​कि तार लिख सकते हैं।

जो भी लेना है वह वास्तव में आप जो लिखना चाहते हैं उसका विषय है। यदि आपके पास पहले से बाइट्स हैं, तो आप सीधे स्ट्रीम का उपयोग कर सकते हैं। यदि आपके पास अक्षर या तार हैं, तो आपको उन्हें स्वयं को बाइट्स में बदलने की आवश्यकता है यदि आप उन्हें स्ट्रीम में लिखना चाहते हैं, या आपको Writer का उपयोग करने की आवश्यकता है जो आपके लिए यह काम करता है।

+0

आप किसी स्ट्रीम में अक्षर कभी नहीं लिख सकते हैं, उन्हें पहले बाइट्स के रूप में एन्कोड किया जाना चाहिए, जिसका अर्थ है कि वे हमेशा 'आउटपुटस्ट्रीम' पर जाते हैं, उदाहरण के लिए 'आउटपुटस्ट्रीमवाइटर' के माध्यम से। –

+0

मैंने यह नहीं कहा कि आप एक स्ट्रीम में अक्षर लिख सकते हैं - मैंने कहा कि आप स्ट्रीम में स्ट्रिंग लिखने के लिए 'राइटर' का उपयोग कर सकते हैं, जिसे आप केवल स्ट्रीम का उपयोग करते समय नहीं कर सकते हैं। इसे और अधिक स्पष्ट करने के लिए मेरे उत्तर को संपादित किया। –

+0

एक स्ट्रिंग वर्णों का अनुक्रम है (या जावा में कोड इकाइयों का अनुक्रम), इसलिए नहीं, आप स्ट्रीम में स्ट्रिंग नहीं लिख सकते हैं, उन्हें पहले बाइट्स के रूप में एन्कोड किया जाना है। –

0

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

More details here

चीयर्स !!!

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