Avatar ·

Cómo guardar un Stream en un archivo en C#? Formas correctas y ejemplos

¡Hola a todos! Soy un desarrollador principiante de C# y me encontré con esta tarea: tengo un objeto de tipo `Stream` (por ejemplo, lo obtuve de una solicitud HTTP o de la memoria), y necesito guardar todo su contenido en un archivo en el disco. Primero probé la forma más simple: leer el stream en un array de bytes usando `Read()` y luego escribir con `File.WriteAllBytes`. Aquí está mi código:
public void SaveStreamToFile(Stream inputStream, string filePath)
{
    byte[] buffer = new byte[inputStream.Length];
    inputStream.Read(buffer, 0, buffer.Length);
    File.WriteAllBytes(filePath, buffer);
}
Pero este código falla con un error si el stream no soporta posicionamiento (por ejemplo, un stream de red). Además, leí que con archivos grandes puede haber problemas de memoria. Por favor, indíquenme cómo guardar correcta y eficientemente un stream arbitrario (sin conocer su longitud de antemano) en un archivo. ¿Cuáles son las best practices? ¿Es necesario cerrar el stream después de escribir? Gracias de antemano por