【发布时间】:2018-12-04 21:51:40
【问题描述】:
我在 c# 中有两个不同的对象,它们使用流公开方法。
其中一个公开了一个将 Stream 作为参数并写入流的方法,而另一个公开了一个将 Stream 作为参数并从中读取的方法。
将内容写入 MemoryStream 是不可能的,因为有太多数据无法完全保存在内存中。有没有办法可以以某种方式链接这两种方法,还是我必须手动编写某种适配器才能在我自己之间插入?
编辑:
其中一个方法看起来像这样,它将对象序列化为流:
object1.WriteToStream(Stream s)
而另一个看起来像这样:
object2.Process(Stream input, Stream output)
第二种方法从输入流中读取,处理数据并将其写入另一个流。我的问题是我需要使用第二种方法来处理第一个对象的WriteToStream方法生成的数据。
【问题讨论】:
-
请把您的代码发给我们好吗?
-
请展示一些示例代码。
-
为什么不创建一个结果对象?您可以向其中添加方法来处理其内部属性。您将受益于未来维护者的可扩展性和简单性
-
除非您重写这两种方法以同时工作,否则您需要某种缓冲区。
MemoryStream仍然是您的最佳选择。如果您唯一关心的不是将数据保存在内存中,那么您当然可以使用文件流。 -
MemoryStream 无法工作,因为数据过多(千兆字节)。并且将它写入中间文件对我来说也不起作用,因为完成处理的一部分是压缩并将其写入文件。拥有一个中间文件会使我的磁盘空间需求暂时增加一倍以上。
标签: c#