我们可以克隆一个流吗?
发布于 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);
}
}
发布于 2010-03-22 14:54:19
不是的。在Stream
类上,通常不支持克隆操作。要做到这一点,它必须包含Stream
类的所有可能实现。
对于像FileStream
这样的项目,这可能是可行的,但考虑一下这对NetworkStream
意味着什么。克隆通常具有创建完全独立的对象的概念,这些对象在创建时是相同的。这在像TCP连接这样的项目上通常是不可行的,这些项目通常在某种程度上被包装在NetworkStream
中。
发布于 2010-03-22 14:53:18
不,你不能克隆一个泛型流。
https://stackoverflow.com/questions/2490423
复制相似问题