C# 如何在.NET Framework 3.5上使用Stream.CopyTo?

C# 如何在.NET Framework 3.5上使用Stream.CopyTo?,c#,C#,我找到了上载代码,该代码包含Stream.CopyTo方法 例如: file.Stream.CopyTo(requestStream); // .NET Framework 4.0 我怎样才能将“file.Stream”复制到“requestStream”?基本上你不能。它只在.NET4中实现。你可以自己写一个类似的方法。。。甚至将其作为一种扩展方法: // Only useful before .NET 4 public static void CopyTo(this Stream in

我找到了上载代码,该代码包含
Stream.CopyTo
方法

例如:

  file.Stream.CopyTo(requestStream); // .NET Framework 4.0

我怎样才能将“file.Stream”复制到“requestStream”?

基本上你不能。它只在.NET4中实现。你可以自己写一个类似的方法。。。甚至将其作为一种扩展方法:

// Only useful before .NET 4
public static void CopyTo(this Stream input, Stream output)
{
    byte[] buffer = new byte[16 * 1024]; // Fairly arbitrary size
    int bytesRead;

    while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
    {
        output.Write(buffer, 0, bytesRead);
    }
}

在4.0之前的.NET版本中,您必须编写自己的方法来复制流:有一段时间,我认为有一些很棒的C#扩展方法特性我以前从未见过!是的,您必须删除它:)Thx againAsync stream copy方法可以在.NET 4.0及以下版本的.NET 4.5异步复制实现中找到:对于
MemoryStream
,您需要添加
input.Position=0
otherwise@JonSkeet我用了你的例子,见鬼,我该如何停止无限读取while()如果流是NetworkStream,而不强制它退出,则使用超时作为解决方法。发送完所有数据后,此代码仍处于读取模式,尝试使用已发送的字节或其他任何检查,但它甚至无法到达检查,如果的或其他东西。对于最后一次读取,while条件保持为true,该读取卡在无限读取上