2011-05-28 5 views
10

स्ट्रिंग करने के लिए मेमोरीस्ट्रीम ऑब्जेक्ट को क्रमबद्ध करना अभी मैं एक मेमोरीस्ट्रीम ऑब्जेक्ट को स्ट्रिंग में बदलने के लिए XmlTextWriter का उपयोग कर रहा हूं। लेकिन मुझे यह नहीं पता होगा कि स्ट्रिंग के लिए मेमोरीस्ट्रीम को क्रमबद्ध करने के लिए एक तेज विधि है या नहीं। स्ट्रीम करने के लिएस्ट्रिंग

स्ट्रिंग को

ms.Position = 0; 
using (StreamReader sr = new StreamReader(ms)) 
{ 
    string content = sr.ReadToEnd(); 
    SaveInDB(ms); 
} 

स्ट्रिंग http://www.eggheadcafe.com/articles/system.xml.xmlserialization.asp

संपादित

स्ट्रीम -

मैं क्रमबद्धता के लिए यहां दिए गए कोड का पालन करें 10

+0

संभव duplic आवेदन कर सकते हैं [आप मेमोरीस्ट्रीम से स्ट्रिंग कैसे प्राप्त करते हैं?] (http://stackoverflow.com/questions/78181/how-do-you-get-a-string-from-a-memorystream) –

उत्तर

24
using(MemoryStream stream = new MemoryStream()) { 
    stream.Position = 0; 
    var sr = new StreamReader(stream); 
    string myStr = sr.ReadToEnd(); 
} 

जब आप MemoryStream(byte[]) कन्स्ट्रक्टर का उपयोग करते हैं तो आप GetBuffer का उपयोग नहीं कर सकते।

MSDN बोली:

यह निर्माता अंतर्निहित धारा का खुलासा नहीं करता। GetBuffer अनधिकृत एक्सेस अपवाद फेंकता है।

आप इस constructor और (TempMemoryStream आदेश GetBuffer उपयोग करने के लिए

+0

मुझे डर है यह लेखन स्ट्रिंग नहीं दे रहा है। स्ट्रिंग को मेमोरी स्ट्रीम में बदलने की कोशिश करने के बाद यह त्रुटि संदेश फेंक रहा है "मेमोरीस्ट्रीम का आंतरिक बफर एक्सेस नहीं किया जा सकता है।" मेमोरीस्ट्रीम करते समय। गेटबफर()। – NLV

+0

क्या आप अपना कोड स्निपेट दिखा सकते हैं? – Stecya

+0

ने पोस्ट में कोड अपडेट किया है। मूल मेमोरी स्ट्रीम लगभग 95000 बाइट्स है। लेकिन जब मैं स्ट्रिंग को स्ट्रीम में वापस परिवर्तित करता हूं तो मुझे केवल 1 9 00 बाइट मिलते हैं। – NLV

0

VB.net में मैं इस

मंद TempText = System.Text.Encoding.UTF8.GetString इस्तेमाल किया में publiclyVisible = true सेट का उपयोग करना चाहिए .ToArray())

सी में #