gpt4 book ai didi

c# - 如何克隆 MemoryStream 对象?

转载 作者:太空狗 更新时间:2023-10-29 20:05:24 27 4
gpt4 key购买 nike

我有一个 MemoryStream 对象,它由 Stream 类型参数传递
(Stream 是 C# 中的抽象类)。

我想克隆它以创建另一个具有原始当前位置的单独的 MemoryStream 对象,并从中创建一个新的 XMLReader,这样我就可以阅读其内容。

这就是我所做的,但它不起作用(调试标有//*的行 -> newReader has got {None} 值(value))
假设:您在一个方法中并且有 Stream currentStream 引用。

var x = new XmlReaderSettings();
x.IgnoreWhitespace = true;

using (var newMemoryStream = new MemoryStream())
{
stream.CopyTo(newMemoryStream);

using (var newReader = XmlReader.Create(newMemoryStream,x)) //*
{

Doing some stuff...

}
}

最佳答案

确保像这样重置 newMemoryStream 上的位置:

newMemoryStream.Position = 0;

stream.CopyTo(newMemoryStream); 之后但在创建 XmlReader 之前

所以整个事情应该是这样的:

var x = new XmlReaderSettings();
x.IgnoreWhitespace = true;

using (var newMemoryStream = new MemoryStream())
{
stream.CopyTo(newMemoryStream);
newMemoryStream.Position = 0;

using (var newReader = XmlReader.Create(newMemoryStream,x)) //*
{
Doing some stuff...
}
}

此外,由于您在进入此方法之前在原始流上使用了另一个读取器,因此请确保源流的 Position 确实在您想要的位置。

关于c# - 如何克隆 MemoryStream 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13962015/

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