Para el trabajo, la especificación de mi proyecto es utilizar .Net 2.0, por lo que no aparece la útil función CopyTo
más adelante.¿Copia de una secuencia a otra?
Necesito copiar el flujo de respuesta de un HttpWebResponse
a otra secuencia (muy probablemente un MemoryStream
, pero podría ser cualquier subclase de Stream
). Mi táctica habitual ha sido algo así como:
BufferedStream bufferedresponse = new BufferedStream(HttpResponse.GetResponseStream());
int count = 0;
byte[] buffer = new byte[1024];
do {
count = bufferedresponse.Read(buffer, 0, buffer.Length);
target.Write(buffer, 0, count);
} while (count > 0);
bufferedresponse.Close();
¿Hay formas más eficientes de hacerlo? ¿El tamaño del buffer realmente importa? ¿Cuál es la mejor forma de copiar de una transmisión a otra en .Net 2.0?
P.S. Esto es para descargar imágenes grandes, 200+ MB GIS tif. Por supuesto, la fiabilidad es primordial.
duplicado Posible de [Mejor manera de copiar entre dos instancias Stream] (http://stackoverflow.com/questions/230128/best-way-to-copy-between-two-stream-instances-c) . También la respuesta elegida es lo que estás haciendo actualmente, así que diría que lo estás haciendo correctamente. –
Antes de que mi pregunta se cierre, me gustaría decir que la mía viene con la restricción .Net 2.0. Espero que sea suficiente para mantenerlo abierto, no quiero que se cierren mis preguntas :( –
La pregunta a la que me he vinculado tiene una respuesta usando su método y el método más nuevo de "CopyTo". Vale la pena mencionar que obtendría un mejor rendimiento (si se ajusta a su caso de uso) para esperar que entre toda la secuencia y luego copie la secuencia en trozos más grandes. Pero eso no siempre es lo ideal. –