Aby rozwinąć trochę inne odpowiedzi tutaj i pomóc wyjaśnić wiele przykładowego kodu, który zobaczysz z kropkami, przez większość czasu nie czytasz i nie piszesz bezpośrednio w strumieniu. Strumienie to niskopoziomowe środki do przesyłania danych.
Zauważysz, że funkcje do odczytu i zapisu są zorientowane na bajty, np. WriteByte (). Nie ma funkcji zajmujących się liczbami całkowitymi, łańcuchami itp. To sprawia, że strumień jest bardzo uniwersalny, ale trudniejszy w obsłudze, jeśli, powiedzmy, chcesz po prostu przesłać tekst.
Jednak platforma .NET udostępnia klasy, które konwertują między typami natywnymi a interfejsem strumienia niskiego poziomu oraz przesyłają dane do lub ze strumienia za Ciebie. Niektóre godne uwagi takie klasy to:
StreamWriter // Badly named. Should be TextWriter.
StreamReader // Badly named. Should be TextReader.
BinaryWriter
BinaryReader
Aby z nich skorzystać, najpierw zdobądź swój strumień, a następnie utwórz jedną z powyższych klas i skojarz ją ze strumieniem. Na przykład
MemoryStream memoryStream = new MemoryStream();
StreamWriter myStreamWriter = new StreamWriter(memoryStream);
StreamReader i StreamWriter konwertują między typami natywnymi i ich reprezentacjami ciągów, a następnie przesyłają ciągi do i ze strumienia jako bajty. Więc
myStreamWriter.Write(123);
zapisze do strumienia „123” (trzy znaki „1”, „2”, a następnie „3”). Jeśli masz do czynienia z plikami tekstowymi (np. Html), StreamReader i StreamWriter to klasy, których użyjesz.
Natomiast
myBinaryWriter.Write(123);
zapisze cztery bajty reprezentujące 32-bitową wartość całkowitą 123 (0x7B, 0x00, 0x00, 0x00). Jeśli masz do czynienia z plikami binarnymi lub protokołami sieciowymi, możesz użyć BinaryReader i BinaryWriter. (Jeśli wymieniasz dane z sieciami lub innymi systemami, musisz uważać na endianness , ale to kolejny post.)