gpt4 book ai didi

c# - 如何在 .NET 中将 Stream 设为 "fork"?

转载 作者:太空狗 更新时间:2023-10-29 18:15:41 26 4
gpt4 key购买 nike

作为discussed before ,当 BinaryReader 或 BinaryWriter 关闭时,其底层 Stream 也会关闭(aargh)。考虑这种情况:一个例程 R 被传递给一个 MemoryStream,比如 M;我想向 M 写入一些内容,然后将其传递给另一个例程以进行更多处理(不一定是写入)。为方便起见,我想将 M 包装在 BinaryWriter 中以进行编写。写入后,我完成了 BinaryWriter 但不是 M

void R(MemoryStream M)
{
using (B = new BinaryWriter(M))
{
// write some stuff using B
}

S(M); // now pass M to another routine for further processing
}

但是,我无法在不关闭 M 的情况下处理 BinaryStream。

问:有没有办法做到以下任何一项?

  • 从 MemoryStream 中提取底层 byte[],
  • 克隆流
  • 关闭流后重新打开流

最佳答案

你最好使用

byte[] buffer = ms.GetBuffer();

然后使用 Array.Copy() 方法复制字节数据。您可以自由地使用它创建新的流。

关于c# - 如何在 .NET 中将 Stream 设为 "fork"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1633672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com