Stream in Byte-Array in C# konvertieren

Muhammad Maisam Abbas 11 Dezember 2023
  1. Verwenden Sie MemoryStream, um Stream in Byte-Array in C# umzuwandeln
  2. Verwenden Sie BinaryReader, um Stream in Byte-Array in C# umzuwandeln
  3. Verwenden Sie StreamReader (für textbasierte Daten), um Stream in Byte-Array in C# umzuwandeln
  4. Verwenden Sie BufferedStream, um Stream in Byte-Array in C# umzuwandeln
  5. Verwenden Sie FileStream (zum Lesen aus einer Datei), um einen Stream in ein Byte-Array in C# zu konvertieren.
  6. Fazit
Stream in Byte-Array in C# konvertieren

In C# sind Streams das Lebenselixier der Datenverarbeitung. Egal, ob Sie mit Netzwerkdaten, Dateiein- und -ausgabe oder irgendeiner anderen Form von Datenquelle arbeiten, Streams sind die Kanäle, durch die Ihre Anwendungen fließen.

Aber was tun Sie, wenn Sie diesen Stream in ein handlicheres Byte-Array umwandeln müssen? In diesem Artikel werden fünf verschiedene Methoden diskutiert, um Streams in C# in Byte-Arrays umzuwandeln.

Verwenden Sie MemoryStream, um Stream in Byte-Array in C# umzuwandeln

In C# können Sie die Klasse MemoryStream verwenden, um einen Stream in ein Byte-Array umzuwandeln. Hier ist eine Schritt-für-Schritt-Anleitung, wie Sie es tun können:

  • Erstellen Sie den Stream, den Sie in ein Byte-Array umwandeln möchten. Dies kann ein Datei-Stream, Netzwerk-Stream oder ein anderer Typ von Stream sein.

    Für dieses Beispiel nehmen wir an, Sie haben einen FileStream:

    FileStream fileStream = new FileStream("example.txt", FileMode.Open);
    
  • Erstellen Sie einen MemoryStream, in dem Sie die Daten als Byte-Array speichern:
    using (MemoryStream memoryStream = new MemoryStream()) {
      // Copy the data from the source stream to the memory stream
      fileStream.CopyTo(memoryStream);
    
      // Convert the memory stream to a byte array
      byte[] byteArray = memoryStream.ToArray();
    
      // Now, byteArray contains the data from the source stream as a byte array
    
      // You can do whatever you want with the byteArray here
    }
    
  • Achten Sie darauf, das using-Statement mit dem MemoryStream zu verwenden, um sicherzustellen, dass er ordnungsgemäß entsorgt wird, wenn Sie fertig damit sind. Dadurch wird auch der MemoryStream gespült und geschlossen.

In diesem Beispiel erstellen wir zunächst einen MemoryStream und verwenden dann die Methode CopyTo, um die Daten vom Quellstream (fileStream) zum MemoryStream zu kopieren. Schließlich verwenden wir die Methode ToArray des MemoryStream, um das Byte-Array zu erhalten.

Verwenden Sie BinaryReader, um Stream in Byte-Array in C# umzuwandeln

Um einen Stream in ein Byte-Array mit Hilfe von BinaryReader in C# umzuwandeln, können Sie folgende Schritte befolgen:

  • Erstellen Sie den Stream, den Sie in ein Byte-Array umwandeln möchten. Dies kann ein Datei-Stream, Netzwerk-Stream oder ein anderer Typ von Stream sein. Für dieses Beispiel nehmen wir an, Sie haben einen FileStream:
    FileStream fileStream = new FileStream("example.txt", FileMode.Open);
    
  • Erstellen Sie einen BinaryReader, um Daten aus dem Quellstream zu lesen:
    using (BinaryReader reader = new BinaryReader(fileStream)) {
      // Read the data from the source stream into a byte array
      byte[] byteArray = reader.ReadBytes((int)fileStream.Length);
    
      // Now, byteArray contains the data from the source stream as a byte array
    
      // You can do whatever you want with the byteArray here
    }
    
  • Achten Sie darauf, das using-Statement mit dem BinaryReader zu verwenden, um sicherzustellen, dass er ordnungsgemäß entsorgt wird, wenn Sie damit fertig sind. Dadurch wird auch der zugrunde liegende FileStream geschlossen.

In diesem Beispiel erstellen wir einen BinaryReader und verwenden dann seine Methode ReadBytes, um den gesamten Inhalt des Quellstreams (fileStream) in ein Byte-Array zu lesen. Die Länge des Byte-Arrays wird durch die Länge des Quellstreams bestimmt.

Verwenden Sie StreamReader (für textbasierte Daten), um Stream in Byte-Array in C# umzuwandeln

Wenn Sie einen textbasierten Stream haben und diesen mithilfe eines StreamReader in C# in ein Byte-Array umwandeln möchten, können Sie dies tun, indem Sie zuerst die Textdaten lesen und sie dann in Bytes mithilfe einer bestimmten Zeichencodierung, wie z.B. UTF-8, codieren. So können Sie es tun:

// Create the stream that you want to convert to a byte array (e.g., FileStream or MemoryStream)
FileStream fileStream = new FileStream("example.txt", FileMode.Open);

// Create a StreamReader to read text data from the stream
using (StreamReader reader = new StreamReader(fileStream, Encoding.UTF8)) {
  // Read the text data from the stream
  string textData = reader.ReadToEnd();

  // Convert the text data to bytes using UTF-8 encoding
  byte[] byteArray = Encoding.UTF8.GetBytes(textData);

  // Now, byteArray contains the text data from the stream as a byte array

  // You can do whatever you want with the byteArray here
}

In diesem Beispiel:

  • Wir erstellen einen StreamReader und geben die Zeichencodierung (UTF-8) an, die zum Lesen des Textes aus dem Stream verwendet werden soll.
  • Wir verwenden die Methode ReadToEnd des StreamReader, um alle Textdaten aus dem Stream in einen String (textData) zu lesen.
  • Dann verwenden wir Encoding.UTF8.GetBytes, um den String textData in ein Byte-Array umzuwandeln. Das Byte-Array enthält die UTF-8-codierte Darstellung der Textdaten.

Verwenden Sie BufferedStream, um Stream in Byte-Array in C# umzuwandeln

Sie können BufferedStream verwenden, um einen Stream effizient in ein Byte-Array in C# umzuwandeln. BufferedStream bietet Pufferungsfunktionen, die die Leistung beim Lesen von oder Schreiben in einen Stream verbessern können. So können Sie es verwenden, um einen Stream in ein Byte-Array umzuwandeln:

// Create the stream that you want to convert to a byte array (e.g., FileStream or MemoryStream)
FileStream fileStream = new FileStream("example.txt", FileMode.Open);

// Create a BufferedStream for efficient reading
using (BufferedStream bufferedStream = new BufferedStream(fileStream)) {
  // Create a MemoryStream to store the bytes
  using (MemoryStream memoryStream = new MemoryStream()) {
    // Read from the BufferedStream and write to the MemoryStream
    byte[] buffer = new byte[4096];  // You can adjust the buffer size as needed
    int bytesRead;

    while ((bytesRead = bufferedStream.Read(buffer, 0, buffer.Length)) > 0) {
      memoryStream.Write(buffer, 0, bytesRead);
    }

    // Convert the MemoryStream to a byte array
    byte[] byteArray = memoryStream.ToArray();

    // Now, byteArray contains the data from the source stream as a byte array

    // You can do whatever you want with the byteArray here
  }
}

In diesem Beispiel:

  • Wir erstellen einen BufferedStream, um effizient aus dem Quellstream (fileStream) zu lesen. Sie können die Puffergröße bei Bedarf an Ihre Anforderungen anpassen.
  • Wir erstellen einen MemoryStream, um die aus dem BufferedStream gelesenen Bytes zu speichern.
  • Wir verwenden einen Puffer (byte[] buffer), um Daten in Chunks aus dem BufferedStream zu lesen und jeden Chunk in den MemoryStream zu schreiben.
  • Schließlich verwenden wir die Methode ToArray des MemoryStream, um das Byte-Array mit den Daten aus dem Quellstream zu erhalten.

Verwenden Sie FileStream (zum Lesen aus einer Datei), um einen Stream in ein Byte-Array in C# zu konvertieren.

Um Daten von einem FileStream (der zum Lesen aus einer Datei verwendet wird) in ein Byte-Array in C# zu konvertieren, können Sie den FileStream und einen MemoryStream verwenden. Hier ist eine schrittweise Anleitung, wie Sie dies tun können:

// Create a FileStream to read from a file (replace "example.txt" with your file path)
using (FileStream fileStream = new FileStream("example.txt", FileMode.Open, FileAccess.Read)) {
  // Create a MemoryStream to store the byte data
  using (MemoryStream memoryStream = new MemoryStream()) {
    // Create a buffer to read data in chunks (adjust the buffer size as needed)
    byte[] buffer = new byte[4096];
    int bytesRead;

    // Read data from the FileStream into the MemoryStream in chunks
    while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0) {
      memoryStream.Write(buffer, 0, bytesRead);
    }

    // Convert the MemoryStream to a byte array
    byte[] byteArray = memoryStream.ToArray();

    // Now, byteArray contains the data from the file as a byte array

    // You can do whatever you want with the byteArray here
  }
}

In diesem Code:

  • Erstellen wir einen FileStream, um Daten aus der Datei zu lesen. Ersetzen Sie "example.txt" durch den Pfad zu Ihrer tatsächlichen Datei.
  • Erstellen wir einen MemoryStream, um die Byte-Daten zu speichern, die aus dem FileStream gelesen werden.
  • Verwenden wir einen Puffer (byte[] buffer), um Daten aus dem FileStream portionsweise zu lesen (passen Sie die Puffergröße bei Bedarf an).
  • Lesen wir Daten aus dem FileStream in einer Schleife in den MemoryStream, bis die gesamte Datei gelesen wurde.
  • Schließlich verwenden wir die Methode ToArray des MemoryStream, um das Byte-Array mit den Daten aus der Datei zu erhalten.

Stellen Sie sicher, dass Sie Ausnahmen behandeln und die Streams in einem Produktivcodekontext ordnungsgemäß schließen/freigeben.

Fazit

In C# ist die Fähigkeit, Streams in Byte-Arrays zu konvertieren, eine grundlegende Fertigkeit. Ob es sich um binäre oder Textdaten, große oder kleine Streams oder Daten aus Dateien handelt, haben Sie nun das Wissen, um Streams effizient in Byte-Arrays zu transformieren.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Verwandter Artikel - Csharp Stream

Verwandter Artikel - Csharp Byte Array