Avatar ·

¿Cómo crear un array de bytes a partir de un Stream en C#? Guía completa

¡Hola a todos! Soy nuevo en C# y estoy trabajando en una aplicación que descarga archivos de internet. Necesito leer todos los datos de un NetworkStream o FileStream en un array byte[]. El problema es que no sé el tamaño del stream de antemano. Intenté usar la propiedad Length, pero para muchos streams lanza una excepción NotSupportedException. Aquí está mi código actual que no funciona:
// Intento leer el stream en un array de bytes
byte[] buffer = new byte[stream.Length]; // Error: 'Stream' does not support seeking
stream.Read(buffer, 0, buffer.Length);
Este error ocurre cuando trabajo con streams de red (NetworkStream) o streams de respuestas HTTP. Entiendo que necesito leer los datos en partes, pero no sé cómo organizar correctamente el bucle. Vi algo sobre MemoryStream, pero no estoy seguro de cómo usarlo. Por favor, indíquenme cómo convertir correcta y eficientemente un Stream en un array de bytes. Preferiblemente con un ejemplo de código para .NET 3.5 (tengo un proyecto legacy).