是否可以克隆.NET流?

san*_*hya 18 .net c#

我们可以克隆一个流吗?

Jos*_*osh 14

不,流通常是指某种本地资源(套接字,文件句柄等),因此无法克隆或序列化.此外,许多流只是前向的,不支持搜索,因此您甚至无法从流中重新读取.

您可以从可读流中执行的操作是将其复制到MemoryStream中,该MemoryStream可以作为字节数组移动.

有关如何执行此操作的代码段,请参阅以下帖子: 如何将一个流的内容复制到另一个流?

public static void CopyStream(Stream input, Stream output)
{
    byte[] buffer = new byte[32768];
    while (true)
    {
        int read = input.Read (buffer, 0, buffer.Length);
        if (read <= 0)
            return;
        output.Write (buffer, 0, read);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 从.NET 4开始,Stream有一个CopyTo方法 (12认同)