Stream in C#-Tutorial: StreamReader & StreamWriter [Beispiel]

Was ist C#-Stream?

Bei C#-Dateioperationen werden normalerweise Streams zum Lesen und Schreiben in Dateien verwendet. Ein Stream ist eine zusätzliche Schicht, die zwischen einer Anwendung und einer Datei erstellt wird. Der Stream wird verwendet, um reibungslose Lese- und Schreibvorgänge in der Datei sicherzustellen.

Streams werden normalerweise beim Lesen von Daten aus großen Dateien verwendet. Durch die Verwendung von Streams werden die Daten großer Dateien in kleine Blöcke zerlegt und an den Stream gesendet. Diese Datenblöcke können dann von der Anwendung gelesen werden.

Der Grund für die Aufteilung in kleine Teile liegt darin, dass es Auswirkungen auf die Leistung hat, wenn man eine große Datei auf einmal liest. Wenn Sie die Daten beispielsweise aus einer 100-MB-Datei auf einmal lesen würden, könnte Ihre Anwendung einfach hängen bleiben und instabil werden. Der beste Ansatz besteht dann darin, Streams zu verwenden, um die Datei in überschaubare Teile zu zerlegen.

Wenn also ein Schreibvorgang auf eine Datei ausgeführt wird, werden die zu schreibenden Daten zuerst in den Stream geschrieben. Vom Stream werden die Daten dann in die Datei geschrieben. Dasselbe gilt für den Lesevorgang. Beim Lesevorgang werden die Daten zuerst von der Datei in den Stream übertragen. Die Daten werden dann über den Stream von der Anwendung gelesen. Schauen wir uns ein Beispiel an, wie wir mithilfe von Streams lesen und schreiben können.

Stream-Reader

Der Stream-Reader wird verwendet, um mithilfe von Streams Daten aus einer Datei zu lesen. Die Daten aus der Datei werden zunächst in den Stream eingelesen. Anschließend liest die Anwendung die Daten aus dem Stream.

Für unser Beispiel gehen wir davon aus, dass wir auf dem Laufwerk D eine Datei namens „Example.txt“ haben. Die Datei ist eine einfache Textdatei und besteht aus zwei Zeilen, wie unten gezeigt

  • Guru99 – .Net
  • Guru99 -C#

Für unser Beispiel erstellen wir eine einfache Konsolenanwendung und arbeiten mit Dateistreams

Schauen wir uns ein Beispiel an, wie wir Streams zum Lesen von Daten aus einer Datei verwenden können. Geben Sie den folgenden Code in die Datei program.cs ein.

Stream-Reader

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";

    using (StreamReader sr = File.OpenText(path))
    {
     String s = "";

     while ((s = sr.ReadLine()) != null)
     {
      Console.WriteLine(s);
     }
    }
   Console.ReadKey();
  }
 }
}

Code-Erklärung:-

  1. Zuerst deklarieren wir ein Stream-Reader-Objekt. Das Stream-Reader-Objekt wird in C# verwendet, um einen Stream von der Datei zur Anwendung zu definieren. Die Daten werden immer dann aus der Datei in den Stream übertragen, wenn Daten aus der Datei gelesen werden. Die Datei.OpenText wird verwendet, um die Datei „Example.txt“ im schreibgeschützten Modus zu öffnen. Der Handler für die Datei wird dann an das Stream-Reader-Objekt gesendet.
  2. Als nächstes definieren wir eine temporäre Variable „s“, die zum Lesen aller Daten aus der Datei verwendet wird.
  3. Wir verwenden dann die Stream-Reader-Methode ReadLine, um jede Zeile aus dem Stream-Puffer zu lesen. Wenn wir dies ausführen Betriebwird zunächst jede Zeile aus der Datei in den Puffer übertragen. Anschließend wird der String line aus dem Puffer in die Variable 's' übertragen. Den Inhalt des Strings 's' schreiben wir dann in die Konsole.

Wenn der obige Code festgelegt ist und das Projekt mit ausgeführt wird Visual Studio, erhalten Sie die folgende Ausgabe.

Ausgabe:-

Stream-Reader

Anhand der Ausgabe können Sie erkennen, dass der Stream Reader beide Zeilen aus der Datei gelesen hat. Schließlich wurden die aus dem Stream gelesenen Zeilen der Zeichenfolge an die Konsole gesendet.

Stream-Autor

Der Streamwriter wird verwendet, um Daten mithilfe von Streams in eine Datei zu schreiben. Die Daten der Anwendung werden zunächst in den Stream geschrieben. Danach schreibt der Stream die Daten in die Datei. Schauen wir uns ein Beispiel an, wie wir Streams zum Schreiben von Daten aus einer Datei verwenden können. Geben Sie den folgenden Code in die Datei program.cs ein.

Stream-Autor

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";
    
    using (StreamWriter sr = File.AppendText(path))
    {
     sr.WriteLine("Guru99 - ASP.Net");
     sr.Close();

     Console.WriteLine(File.ReadAllText(path));
    }
    Console.ReadKey();
  }
 }
}

Code-Erklärung:-

  1. Zuerst deklarieren wir ein Stream-Writer-Objekt. Das Stream-Writer-Objekt wird in C# zum Definieren eines Streams verwendet. Der Stream wird dann verwendet, um Daten von der Anwendung in die Datei zu schreiben. Die Daten werden von der Anwendung an den Stream übertragen, wann immer Daten geschrieben werden müssen. Mit dem Befehl File.AppendText wird die Datei „Example.txt“ im Anhängemodus geöffnet. Der Handler für die Datei wird dann an das Stream-Writer-Objekt gesendet.
  2. Wir verwenden die Stream-Schreibmethode Writeline, um die Zeile „Guru99 – ASP.Net“ in den Stream zu schreiben. Aus dem Stream wird die Zeile dann in die Datei geschrieben.
  3. Anschließend schließen wir den Stream-Writer, nachdem wir in die Datei geschrieben haben. Normalerweise empfiehlt es sich, Dateihandler zu schließen, wenn die Datei nicht mehr für Schreibzwecke benötigt wird.
  4. Zum Schluss lesen wir den Inhalt der Datei noch einmal und schreiben ihn in das Konsolenprotokoll. Hiermit wird überprüft, ob die Zeile in die Datei geschrieben wurde.

Wenn der obige Code festgelegt ist und das Projekt mit Visual Studio ausgeführt wird, erhalten Sie die folgende Ausgabe.

Ausgabe:-

Stream-Autor

Anhand der Ausgabe können Sie erkennen, dass die Zeile „Guru99 – ASP.Net“ erfolgreich zur Datei hinzugefügt wurde. Alle 3 Textzeilen sind in der Konsole zu sehen.

Zusammenfassung

  • Streams werden als Zwischenebene zwischen der Anwendung und der Datei verwendet.
  • Ein StreamReader wird immer dann verwendet, wenn Daten aus einer Datei gelesen werden müssen.
  • Ein Streamwriter kommt immer dann zum Einsatz, wenn Daten in eine Datei geschrieben werden müssen.