Avatar ·

Cómo crear un array de bytes (byte[]) a partir de un Stream en C#?

¡Hola a todos! Soy un desarrollador C# principiante y tengo un problema. Necesito leer todos los datos de un Stream en un array de bytes (byte[]). El Stream puede obtenerse de diferentes fuentes: archivo, solicitud de red, MemoryStream, etc. Aquí hay un ejemplo de código que estoy intentando escribir: ```csharp public byte[] ReadStream(Stream stream) { // Sé que Stream tiene Length, pero no siempre está disponible. // ¿Cómo leer correctamente todos los bytes? byte[] buffer = new byte[stream.Length]; // Error "Stream does not support seeking" stream.Read(buffer, 0, (int)stream.Length); return buffer; } ``` El problema es que `stream.Length` puede lanzar una excepción `NotSupportedException` si el Stream no admite búsqueda (seeking). Por ejemplo, al trabajar con `NetworkStream` o `GZipStream`, la propiedad Length no está disponible. Además, incluso si Length está disponible, no estoy seguro de que `Read()` lea todos los datos en una sola llamada. El método `Read()` puede devolver menos bytes de los solicitados. Estoy buscando