【问题标题】:Make the current point of a C# stream the beginning使 C# 流的当前点成为开始
【发布时间】:2014-07-15 16:34:01
【问题描述】:

我必须读取 C# 流的一些字节,然后将流传递给库方法,该方法应该读取其余部分。不幸的是,这个方法调用了一个stream.Seek(0, SeekOrigin.Begin)。因此,它将读取它无法理解的第一个字节。

我可以将流的开头重置为其当前位置吗?我不想将整个流的其余部分复制到 MemoryStream 中,因为它可能非常大。

【问题讨论】:

  • 不,你不能。您可以做的是在调用该外部方法后保存当前位置以便稍后恢复它。

标签: c# stream


【解决方案1】:

不,没有什么可以这样做...但是您可以做的是创建自己的 wrapper 流,该流维护对原始流的引用,并将所有调用委托给它...修改任何Seek()Position 调用适当。您可能会发现,为了您的目的,您可以进行一些更深奥的调用(例如异步支持),为简单起见只需抛出 NotImplementedException

【讨论】:

  • 是装饰器模式吗?
猜你喜欢
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 1970-01-01
相关资源
最近更新 更多