c# - 在两个目的地复制流内容

标签 c# stream copy

我知道可以使用 sourceStream.CopyTo(targetStream); 将一个流复制到另一个流,但我想将 sourceStream 的内容复制到 中的两个目标流>两个不同的任务。当我两次调用此方法时,第二次流为空。

这可能吗?一种简单的方法是将流内容加载到内存中,然后将其复制到目标上,但这可能会导致 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);
}

这会遍历输入流一次,将每个 block 写入两个输出。这几乎就是 CopyTo 在内部所做的——唯一的区别是第二个输出。

关于c# - 在两个目的地复制流内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43717853/

相关文章:

php - 将段落的一部分复制到变量中

c# - 如何使用 Windows 窗体和 C# 将嵌入的音乐文件复制到路径

c# - 带有 List<object> 的 JSON.NET 的 System.OutOfMemoryException

c# - 无法加载引用中可见的程序集 (.DLL)

python - 如何使用 python 结构发送流

node.js - forEach 中的 Node 惰性和异步函数

pdf - 无法从pdf复制特殊字符

c# - 在 C# XML 中解析 XML 以获取特定内容

c# - ASP.NET MVC C# 搜索帮助

C++,协作 FILE* 和 std 流