我知道可以将一个流复制到另一个流,sourceStream.CopyTo(targetStream);但我想将 的内容复制sourceStream到两个不同的Tasks 中的两个目标流。当我两次调用此方法时,第二次流为空。
这可能吗?一种简单的方法是将流内容加载到内存中,然后将其复制到目标上,但可能会导致OutOfMemoryException.
如果重要的话,我正在使用 .Net 4.5
如果你将其复制到两个目的地在同一时间,然后是这样的:
byte[] buffer = new byte[SOME_SIZE];
int bytesRead;
while((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0)
{
dest1.Write(buffer, 0, bytesRead);
dest2.Write(buffer, 0, bytesRead);
}
Run Code Online (Sandbox Code Playgroud)
这将遍历输入流一次,将每个块写入两个输出。这几乎是CopyTo内部所做的 - 唯一的区别是第二个输出。
| 归档时间: |
|
| 查看次数: |
1821 次 |
| 最近记录: |