Die MemoryStream-Klasse erstellt Streams, die im Arbeitsspeicher gesichert werden statt zum Beispiel im Dateisystem, wie das bei FileStreams der Fall ist. Eine Anwendung, die bisher viel mit temporären Dateien im Filesystem arbeitet, kann u. U. eine Menge Performance gewinnen, indem sie stattdessen MemoryStreams verwendet. Viele Komponenten, wie z. B. das RichTextBox-Steuerelement, akzeptieren nämlich in ihren Load() und Save() Methoden nicht nur einen Dateinamen, sondern wahlweise auch eine Stream-Instanz. Und hier kann statt einem FileStream auch ein MemoryStream übergeben werden. Das Beispiel hier zeigt die Verwendung eines MemoryStreams mit einem RichTextBox-Steuerelement.
1 string _rtf = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1031{" +
2 @"\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;" +
3 @"}}\viewkind4\uc1\pard\f0\fs17 Hallo Stream\par}";
4
5 // *** RTF-Datei aus Speicher laden ***
6 // Stream-Objekt als MemoryStream-Objekt erstellen
7 // Byte-Array Darstellung von String im Konstruktor übergeben
8 Stream s = new MemoryStream(UTF8Encoding.Default.GetBytes(_rtf));
9 //Stream an LoadFile() Methode übergeben
10 this.richTextBox1.LoadFile(s, RichTextBoxStreamType.RichText);
11
12 // *** RTF-Datei in Speicher sichern ***
13 s = new MemoryStream();
14 // Stream an SaveFile() Methode übergeben
15 this.richTextBox1.SaveFile(s, RichTextBoxStreamType.RichText);
16 // Stream in MemoryStream casten, damit ToArray() Methode
17 // aufgerufen werden kann
18 MemoryStream m = (MemoryStream)s;
19 byte[] b = m.ToArray();
20 // Byte-Array in String zurückkonvertieren
21 string t = UTF8Encoding.Default.GetString(b);
22 //ASCIIEncoding.Default.GetString
23 m.Dispose();
24 s.Dispose();
Beim Umwandeln von/ in Byte-Arrays helfen die statischen Methoden der jeweiligen Encoder-Klasse. Um ein ASCII-codiertes Byte-Array zu erstellen, hätte in Zeile 8 die Methode ASCIIEncoding.Default.GetBytes() aufgerufen werden müssen.