2008-10-02 6 views
6

मुझे एक विधि को कॉल करने की आवश्यकता है जो स्ट्रीम तर्क स्वीकार करता है। विधि स्ट्रीम में टेक्स्ट लोड करती है, जो आमतौर पर एक फ़ाइल होगी। मैं बस एक फ़ाइल में लिखने के बजाय स्ट्रीम की सामग्री के साथ एक स्ट्रिंग को पॉप्युलेट करना चाहता हूं। मैं यह कैसे करु?मैं नेट में स्ट्रीम के रूप में स्ट्रिंग का उपयोग कैसे करूं?

उत्तर

7

एक StreamReader के साथ एक MemoryStream का उपयोग करें। कुछ की तरह:

using (MemoryStream ms = new MemoryStream()) 
using (StreamReader sr = new StreamReader(ms)) 
{ 
    // pass the memory stream to method 
    ms.Seek(0, SeekOrigin.Begin); // added from itsmatt 
    string s = sr.ReadToEnd(); 
} 
+0

शायद यह उल्लेख करना चाहें कि इसे पढ़ने के लिए इसे उपयोग करने से पहले आपको स्ट्रीम को रिवाइंड करना होगा। :) –

5

उपयोग StringWriter एक स्ट्रिंग पर एक धारा के रूप में कार्य करने के लिए:

StringBuilder sb = new StringBuilder(); 
StringWriter sw = new StringWriter(sb); 
CallYourMethodWhichWritesToYourStream(sw); 
return sb.ToString(); 
+0

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

0

आप की तरह कुछ कर सकते हैं:

string s = "Wahoo!"; 
int n = 452; 

using(Stream stream = new MemoryStream()) { 
    // Write to the stream 

    byte[] bytes1 = UnicodeEncoding.Unicode.GetBytes(s); 
    byte[] bytes2 = BitConverter.GetBytes(n); 
    stream.Write(bytes1, 0, bytes1.Length); 
    stream.Write(bytes2, 0, bytes2.Length); 
+0

या आप बस मेइटस्ट्रीम को बाइट्स 1 [] सरणी से बना सकते हैं। –

2
MemoryStream ms = new MemoryStream(); 
YourFunc(ms); 
ms.Seek(0, SeekOrigin.Begin); 
StreamReader sr = new StreamReader(ms); 
string mystring = sr.ReadToEnd(); 

एक तरह से यह करने के लिए है।

+0

हम्म ... ब्रायंट की प्रतिक्रिया पहले नहीं देखी - अनिवार्य रूप से वही बात। ओह अच्छा। अगर आप इसे सेक कॉल जोड़ते हैं तो उनकी इच्छा काम करेगी। – itsmatt

+0

यह कोड वास्तव में काम करता है। ब्रायंट की बेहतर स्वरूपित प्रतिक्रिया के साथ इसे मर्ज करना बहुत अच्छा होगा, लेकिन मेरे पास अभी तक ऐसा करने की प्रतिष्ठा नहीं है ... – JoshL

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

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