我的项目要求使用 .Net 2.0,因此我不能使用后来推出的方便的 CopyTo
函数。
我需要将来自 HttpWebResponse
的响应流复制到另一个流(很可能是 MemoryStream
,但可以是任何 Stream
子类)。 我通常的策略是:
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();
有更有效的方法吗?缓冲区大小真的很重要吗?在.Net 2.0中从一个流复制到另一个流的最佳方法是什么?
P.S. 这是为了下载大型的200+ MB GIS tif图像。当然,可靠性是最重要的。
CopyTo
方法的答案。值得一提的是,如果适用于您的用例,您将获得更好的性能,即等待整个流进来,然后将流复制到较大的块中。但这并不总是理想的。 - Chris Walsh