FileStream बनाम / मतभेद स्ट्रीमराइटर?


85

सवाल:

क्या के बीच अलग है FileStreamऔर StreamWriterमें नेट ?

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

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

जवाबों:


98

डॉटनेट में FileStream और StreamWriter के बीच क्या अंतर है?

FileStreamहै ए Stream। सभी धाराओं की तरह यह केवल byte[]डेटा से संबंधित है।

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

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

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

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

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


4
यह भी ध्यान रखना महत्वपूर्ण है कि FileStreamएक प्रकार की धारा है, जो विशेष रूप से फाइलों की ओर बनाई जाती है। धाराएँ मूल रूप से बाइट्स के साथ काम करती हैं, हालांकि StreamWriter/ रीडर किसी भी स्ट्रीम पर टेक्स्ट लिख / पढ़ेगा , न कि सिर्फ FileStreamएस। उदाहरण के लिए, MemoryStreams, NetworkStreams, आदि ..
iliketocode

19

FileStream बाइट्स लिखता है, StreamWriter टेक्स्ट लिखता है। बस इतना ही।


14
दरअसल, यह "सभी" नहीं है ... लेकिन यह एक सही अंतर है।
डेविड

14

एक FileStream स्पष्ट रूप से काम करने वाली फ़ाइलों के लिए अभिप्रेत है।

किसी भी प्रकार की स्ट्रीम - नेटवर्क सॉकेट, फाइल आदि को स्ट्रीम करने के लिए एक स्ट्रीमव्यूटर का उपयोग किया जा सकता है ।

स्कॉटगू विभिन्न स्ट्रीम वस्तुओं को यहां बहुत अच्छी तरह से समझाता है: http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223


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

7

ठीक है, के लिए MSDN से FileStream:

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

और इसके लिए MSDN StreamWriter:

किसी विशेष एन्कोडिंग में एक स्ट्रीम में वर्ण लिखने के लिए एक TextWriter लागू करता है।

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

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

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

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


6

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

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

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


0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.