为了工作,我的项目规范是使用.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();
Run Code Online (Sandbox Code Playgroud)
有更有效的方法吗?缓冲区的大小真的重要吗?在.Net 2.0中从一个流复制到另一个流的最佳方法是什么?
PS这是用于下载200 + MB以上的大型GIS图像.当然,可靠性至关重要.
这是一个方便的功能.是的,缓冲区大小很重要.增加它可能会在大文件上提供更好的性能.
public static void WriteTo(Stream sourceStream, Stream targetStream)
{
byte[] buffer = new byte[0x10000];
int n;
while ((n = sourceStream.Read(buffer, 0, buffer.Length)) != 0)
targetStream.Write(buffer, 0, n);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10316 次 |
| 最近记录: |