2011-02-10 14 views
65

प्रश्न:फ़ाइलस्ट्रीम बनाम/मतभेद StreamWriter?

डॉटनेट में फ़ाइलस्ट्रीम और स्ट्रीमवाइटर के बीच क्या अंतर है?

इसका उपयोग किस संदर्भ में किया जाना चाहिए? उनका लाभ और नुकसान क्या है?

क्या इन दोनों को एक साथ जोड़ना संभव है?

उत्तर

79

डॉटनेट में फ़ाइलस्ट्रीम और स्ट्रीमवाइटर के बीच क्या अंतर है?

FileStreamStream है। सभी स्ट्रीम की तरह यह केवल byte[] डेटा से संबंधित है।

StreamWriter : TextWriter, स्ट्रीम-सजावटी है। एक टेक्स्टवाइटर स्ट्रिंग या चार जैसे टेक्स्ट डेटा को byte[] पर एन्कोड करता है और फिर इसे Stream से लिंक करता है।

इसका उपयोग किस संदर्भ में किया जाना चाहिए? उनका लाभ और नुकसान क्या है?

आपके पास byte[] डेटा होने पर आप एक नंगे फ़ाइलस्ट्रीम का उपयोग करते हैं। जब आप टेक्स्ट लिखना चाहते हैं तो आप StreamWriter जोड़ते हैं। अधिक जटिल डेटा लिखने के लिए एक फॉर्मेटर या एक सीरिएलाइज़र का उपयोग करें।

क्या इन दोनों को एक साथ जोड़ना संभव है?

हां। StreamWriter बनाने के लिए आपको हमेशा स्ट्रीम की आवश्यकता होती है। सहायक विधि System.IO.File.CreateText("path") उन्हें संयोजन में बनाएगी और फिर आपको केवल बाहरी लेखक को निपटाना होगा।

+1

यह भी ध्यान रखना महत्वपूर्ण है कि 'फ़ाइलस्ट्रीम' एक प्रकार का प्रवाह है, जो विशेष रूप से फ़ाइलों के प्रति तैयार किया गया है। धाराएं मूल रूप से बाइट्स के साथ काम करती हैं, हालांकि 'स्ट्रीमवाइटर'/रीडर * किसी भी * धारा पर पाठ लिख/पढ़ेगी, न केवल 'फाइलस्ट्रीम'। उदाहरण के लिए, 'मेमोरीस्ट्रीम', 'नेटवर्कस्ट्रीम', आदि .. – iliketocode

18

फ़ाइलस्ट्रीम बाइट लिखता है, स्ट्रीमवाइटर टेक्स्ट लिखता है। बस इतना ही।

+11

असल में, यह "सब" नहीं है ... लेकिन यह एक सही अंतर है। – David

14

एक फ़ाइलस्ट्रीम स्पष्ट रूप से काम करने वाली फ़ाइलों के लिए है। FileStream के लिए http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223

+1

धाराओं के लिए उत्कृष्ट संदर्भ, हालांकि इसमें यादृच्छिक पहुंच आर/डब्ल्यू धाराओं को शामिल नहीं किया गया है। विशेष रूप से क्रमबद्धता/deserialization जानकारी और गैर फ़ाइल धाराओं का प्रदर्शन बहुत उपयोगी हैं। +1 – ThunderGr

7

ठीक है, MSDN से:, नेटवर्क सॉकेट, फ़ाइलों आदि

ScottGu अलग स्ट्रीम वस्तुओं काफी अच्छी तरह से यहाँ बताते हैं -

एक StreamWriter Stream किसी भी प्रकार की स्ट्रीम करने के लिए इस्तेमाल किया जा सकता :

सिंक्रोनस और एसिंक्रोनस पढ़ने और लिखने के संचालन दोनों का समर्थन करते हुए एक फ़ाइल के चारों ओर एक स्ट्रीम का खुलासा करता है।

और StreamWriter के लिए MSDN:

एक विशेष एन्कोडिंग में एक धारा को वर्ण लिखने के लिए एक TextWriter लागू करता है। जबकि StreamWriter केवल लिखने है

सबसे स्पष्ट अंतर यह है कि FileStream पढ़ने/लिखने के संचालन की अनुमति देता है।

StreamWriter पृष्ठ जोड़ने के लिए पर चला जाता है:

StreamWriter, एक विशेष एन्कोडिंग में चरित्र उत्पादन के लिए डिज़ाइन किया गया है जबकि स्ट्रीम से व्युत्पन्न वर्ग बाइट इनपुट और आउटपुट के लिए डिजाइन किए हैं।

तो एक दूसरे का अंतर है, जबकि StreamWriter पाठ के लिए है, कि FileStream बाइट्स के लिए है।

5

वे ज्ञात डेटा स्रोतों को जानकारी आउटपुट करने में उपयोग किए जाने वाले दो अलग-अलग स्तर हैं।

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

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

0

एक महत्वपूर्ण अंतर (उपरोक्त टिप्पणियों के अतिरिक्त), यह हो सकता है कि फ़ाइलस्ट्रीम यादृच्छिक डिस्क Acceess को किसी भी निर्दिष्ट FileStream.Position को पढ़ और लिखता है। बड़ी फ़ाइल संशोधनों के लिए, यह अमूल्य हो सकता है।

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