2010-09-28 31 views
12

Dize nesnesine sahibim. Bu verileri XYZ tipi başka bir nesneye aktarmam gerekiyor. Ancak XYZ tipi bu nesne sadece System.IO.Stream alıyor. Öyleyse, dize verilerini bir akışa dönüştürmek, böylece XYZ tipi nesnesi bu dize verilerini kullanabilir?Bir String Nesnesinden System.IO.Stream nasıl alınır

cevap

26

Dizeyi bir bayt dizisine çevirmek için kullanılacak bir metin kodlaması seçmeniz ve ardından işlevinizi çağırmak için bir MemoryStream kullanmanız gerekir. Örneğin:

using(System.IO.MemoryStream ms = new System.IO.MemoryStream(
    System.Text.Encoding.UTF16.GetBytes(yourString))) 
{ 
    XYZ(ms); 
} 

Sen dize geçmek için kullanmak istediğiniz ne olursa olsun kodlama olmak UTF16 değiştirebilir.

System.IO.MemoryStream mStream = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes("the string")); 

gerçekten ne yapmak istediğinize bağlı olarak, daha iyi StringReader sınıfını kullanarak sağlanabilir: sizi varsayarsak

+0

, teşekkürler. – mohang

+0

satır 2'de eksik sağ parantez ekleyin. Düzenleme yapılamadı çünkü düzenlemeler 6 karakterden daha fazla değişiyor ... – cudahead

+0

@cudahead: Teşekkürler, bitti. –

1

dize ait akışı UTF8 olarak kodlanmış istiyorum. Bu bir IO değil. Akış, ancak bir dizenin metin yönelimli okumasını kolaylaştırır.

1

Bu kod yükler O RichTextBox biçimlendirilmiş metin (rtf) çalışıyor

TextRange tr = new TextRange(RichTextBox1.Document.ContentStart,RichTextBox1.Document.ContentEnd); 

string s = myStringData; //myStringData is a string in some format - rtf, xml, etc.. 
MemoryStream ms = new MemoryStream(s); 
tr.Load(ms, DataFormats.Rtf); 
İlgili konular