Um andere Antworten hier ein wenig zu erweitern und einen Großteil des Beispielcodes zu erklären, über den Sie gepunktet sehen, lesen und schreiben Sie die meiste Zeit nicht direkt in einen Stream. Streams sind ein einfaches Mittel zum Übertragen von Daten.
Sie werden feststellen, dass die Funktionen zum Lesen und Schreiben alle byteorientiert sind, z. B. WriteByte (). Es gibt keine Funktionen für den Umgang mit Ganzzahlen, Zeichenfolgen usw. Dies macht den Stream sehr universell, aber weniger einfach zu bearbeiten, wenn Sie beispielsweise nur Text übertragen möchten.
.NET bietet jedoch Klassen, die zwischen nativen Typen und der Stream-Schnittstelle auf niedriger Ebene konvertieren und die Daten für Sie zum oder vom Stream übertragen. Einige bemerkenswerte solche Klassen sind:
StreamWriter // Badly named. Should be TextWriter.
StreamReader // Badly named. Should be TextReader.
BinaryWriter
BinaryReader
Um diese zu verwenden, erwerben Sie zuerst Ihren Stream, erstellen dann eine der oben genannten Klassen und ordnen sie dem Stream zu. Z.B
MemoryStream memoryStream = new MemoryStream();
StreamWriter myStreamWriter = new StreamWriter(memoryStream);
StreamReader und StreamWriter konvertieren zwischen nativen Typen und ihren Zeichenfolgendarstellungen und übertragen dann die Zeichenfolgen als Bytes zum und vom Stream. So
myStreamWriter.Write(123);
schreibt "123" (drei Zeichen '1', '2', dann '3') in den Stream. Wenn Sie mit Textdateien (z. B. HTML) arbeiten, sind StreamReader und StreamWriter die Klassen, die Sie verwenden würden.
Wohingegen
myBinaryWriter.Write(123);
schreibt vier Bytes, die den 32-Bit-Ganzzahlwert 123 (0x7B, 0x00, 0x00, 0x00) darstellen. Wenn Sie mit Binärdateien oder Netzwerkprotokollen arbeiten, können Sie BinaryReader und BinaryWriter verwenden. (Wenn Sie Daten mit Netzwerken oder anderen Systemen austauschen, müssen Sie auf Endianness achten , aber das ist ein anderer Beitrag.)