c# - 从一个流复制到另一个?

标签 c# .net-2.0

对于工作,我的项目规范是使用 .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 中从一个流复制到另一个流的最佳方式是什么?

附言这用于下载 200+ MB 的大型 GIS tif 图像。当然,可靠性是最重要的。

最佳答案

这是一个方便的功能。是的,缓冲区大小很重要。增加它可能会给您带来更好的大文件性能。

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);
}

关于c# - 从一个流复制到另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216367/

相关文章:

c# - 如何从已知方法中获取方法名?

c# 内存游戏,需要在游戏结束时添加消息

c# - Process.Start() 是否以任何方式连接到可执行文件中?

windows-7 - Windows 7 TextureBrush..ctor()错误

c# - 如何查询一个域的用户是否是另一个AD域中的组的成员?

c# - 从 GUID 到完整路径

c# - 如果我在不同的线程上同步运行,它会使每个线程异步吗?

c# - 如何通过本地网络正确执行C#文件?

asp.net - 如何在 ASP.NET 中动态生成列表项到无序列表?

c# - 打开标准 "Find Network Printer"对话框