c# – 如何克隆MemoryStream对象?
发布时间:2020-12-15 08:08:55 所属栏目:百科 来源:网络整理
导读:我有一个MemoryStream对象,它由Stream类型参数传递 (Stream是C#中的抽象类). 我想克隆他,并创建另一个MemoryStream对象的一侧与原始的当前位置,并创建一个新的XMLReader,所以我将能够阅读其内容. 这就是我做的,它不起作用(调试标有// * – newReader的行有{N
我有一个MemoryStream对象,它由Stream类型参数传递
(Stream是C#中的抽象类). 我想克隆他,并创建另一个MemoryStream对象的一侧与原始的当前位置,并创建一个新的XMLReader,所以我将能够阅读其内容. 这就是我做的,它不起作用(调试标有// * – > newReader的行有{None}值) 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... } } 此外,由于您在输入此方法之前在原始流上使用其他阅读器,因此请确保源流的位置确实位于您希望的位置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |