【发布时间】:2019-06-23 03:51:21
【问题描述】:
我目前正在进行返回 MemoryStream 对象的 api 调用。我在遍历 for 循环并使用 copyTo 方法将内存流附加到另一个循环时遇到问题。它会覆盖流中已经存在的内容。
到目前为止,我已经尝试了几乎所有堆栈溢出答案的组合,但都无法获得正确的结果。
MemoryStream docStream2 = new MemoryStream();
MemoryStream docStream3 = new MemoryStream();
docStream = (MemoryStream)ApiCall
docStream2 = (MemoryStream)ApiCall
docStream3 = (MemoryStream)ApiCall
docStream.Position = 0;
docStream2.Position = 0;
docStream2.CopyTo(docStream);
docStream.Position = docStream.Length;
docStream3.Position = 0;
docStream3.CopyTo(docStream);
return docStream
我希望得到一个包含每个 docStream memoryStream 对象的所有内容的流。相反,我只得到最后一个流。我还考虑过制作一个流列表,但我还没有找到一种将流列表从 webapi2 返回到 mvc4 应用程序的方法,但这是一个附带问题。提前致谢!
【问题讨论】:
-
假设
docStream是空的,你不需要移动它的位置:当你CopyTo它时,当前位置将被设置到流的末尾。但是当您开始复制其他流的内容时,docStream需要为空。因此,使用全新的MemoryStream,您的代码将照常运行。
标签: c# stream memorystream