首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可以克隆.NET流吗?

可以克隆.NET流吗?
EN

Stack Overflow用户
提问于 2010-03-22 14:50:19
回答 4查看 11.9K关注 0票数 17

我们可以克隆一个流吗?

EN

回答 4

Stack Overflow用户

发布于 2010-03-22 14:52:42

不,流通常引用某种类型的本地资源(套接字、文件句柄等),因此它们不能被克隆或序列化。此外,许多流是只向前的,不支持查找,因此您甚至可能无法从流中重新读取。

但是,从可读流中可以做的是将其复制到一个可以作为字节数组移动的MemoryStream中。

请参阅下面的帖子,获取演示如何执行此操作的代码片段:How do I copy the contents of one stream to another?

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);
    }
}
票数 15
EN

Stack Overflow用户

发布于 2010-03-22 14:54:19

不是的。在Stream类上,通常不支持克隆操作。要做到这一点,它必须包含Stream类的所有可能实现。

对于像FileStream这样的项目,这可能是可行的,但考虑一下这对NetworkStream意味着什么。克隆通常具有创建完全独立的对象的概念,这些对象在创建时是相同的。这在像TCP连接这样的项目上通常是不可行的,这些项目通常在某种程度上被包装在NetworkStream中。

票数 3
EN

Stack Overflow用户

发布于 2010-03-22 14:53:18

不,你不能克隆一个泛型流。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2490423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档