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; } }