Codefieber.de

IT-Blog

Stream to byte-Array

| Keine Kommentare

Um einen Stream in ein byte-Array zu schreiben kann man nachfolgenden Snippet nutzen. Hier wird einer Methode (private static byte[] ReadFully(Stream input, int startPosition, int endPosition)) die Paramter Stream input, int startPosition und int endPosition übergeben.

In der Methode selber wird ein byte-Array buffer instanziiert, welcher die Länge des Input-Streams hat.
Mit input.Position = 0 wird die Position auf 0 gesetzt und mit input.Seek(startPosition, SeekOrigin.Current); wird der Zeiger auf die übergebene Startposition gesetzt.

In einer While-Schleife wird nun der Stream ab der angegebenen Position gelesen, solange int read größer als 0 ist.
In der Schleife werden die Daten aus aus dem Buffer in den MemoryStream geschrieben. Ist die Position größer oder gleich endPosition wird die While-Schleife beendet und es wird der MemoryStream als byte-Array zurückgegeben.

/// <summary>
        /// Read the inputstream and writes into an byte-array
        /// </summary>
        /// <param name="input">stream</param>
        /// <param name="startPosition">startposition</param>
        /// <param name="endPosition">endposition</param>
        /// <returns></returns>
        private static byte[] ReadFully(Stream input, int startPosition, int endPosition)
        {
            try
            {
                byte[] buffer = new byte[input.Length];
                using (MemoryStream ms = new MemoryStream())
                {
                    int read;
                    input.Position = 0;
                    input.Seek(startPosition, SeekOrigin.Current);
                    while ((read = input.Read(buffer, 0, 1)) > 0)
                    {
                        ms.Write(buffer, 0, read);
                        if (ms.Position >= endPosition)
                            break;
                    }
                    return ms.ToArray();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
avatar

Autor: Pascal

Codefieber.de wird von Pascal Betke geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.