Stream in Byte-Array in C# konvertieren
-
Verwenden Sie
MemoryStream
, um Stream in Byte-Array in C# umzuwandeln -
Verwenden Sie
BinaryReader
, um Stream in Byte-Array in C# umzuwandeln -
Verwenden Sie
StreamReader
(für textbasierte Daten), um Stream in Byte-Array in C# umzuwandeln -
Verwenden Sie
BufferedStream
, um Stream in Byte-Array in C# umzuwandeln -
Verwenden Sie
FileStream
(zum Lesen aus einer Datei), um einen Stream in ein Byte-Array in C# zu konvertieren. - Fazit
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 demMemoryStream
zu verwenden, um sicherzustellen, dass er ordnungsgemäß entsorgt wird, wenn Sie fertig damit sind. Dadurch wird auch derMemoryStream
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 demBinaryReader
zu verwenden, um sicherzustellen, dass er ordnungsgemäß entsorgt wird, wenn Sie damit fertig sind. Dadurch wird auch der zugrunde liegendeFileStream
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
desStreamReader
, um alle Textdaten aus dem Stream in einen String (textData
) zu lesen. -
Dann verwenden wir
Encoding.UTF8.GetBytes
, um den StringtextData
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 demBufferedStream
gelesenen Bytes zu speichern. -
Wir verwenden einen Puffer (
byte[] buffer
), um Daten in Chunks aus demBufferedStream
zu lesen und jeden Chunk in denMemoryStream
zu schreiben. -
Schließlich verwenden wir die Methode
ToArray
desMemoryStream
, 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 demFileStream
gelesen werden. -
Verwenden wir einen Puffer (
byte[] buffer
), um Daten aus demFileStream
portionsweise zu lesen (passen Sie die Puffergröße bei Bedarf an). -
Lesen wir Daten aus dem
FileStream
in einer Schleife in denMemoryStream
, bis die gesamte Datei gelesen wurde. -
Schließlich verwenden wir die Methode
ToArray
desMemoryStream
, 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.
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