如何克隆MemoryStream对象? [英] How can I clone MemoryStream object?

查看:50
本文介绍了如何克隆MemoryStream对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a MemoryStream object which is passed by Stream type parameter
(Stream is abstract class in C#).

我想克隆他并创建另一个MemoryStream对象,该对象的位置与原始对象的当前位置相同,并在其中另创建一个新的XMLReader,这样我就可以读取其内容.

I want to clone him and to create another MemoryStream object a side with current position of the original and to create also a new XMLReader out of it, so I will be able to read its content.

这是我所做的,并且不起作用(调试标有//* -> newReader的行具有{None}值)
假设:您位于方法内部,具有Stream currentStream引用.

This is what I did, and it's not working (debugging the line marked with //* -> newReader has got {None} value)
Assumption: you are inside a method and have Stream currentStream reference.

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...

         }
 }

推荐答案

我已经解决了我的问题! :)
缺少的内容用//*标记. 这是应有的代码:

I have solved my problem! :)
The things which were missing are marked with //*. Here is the code as it should be:

var xmlReaderSettings = new XmlReaderSettings();

stream.Position = 0;//*
xmlReaderSettings.IgnoreWhitespace = true;
using (var newMemoryStream = new MemoryStream())
{
    stream.CopyTo(newMemoryStream);
    newMemoryStream.Position = 0;  //*
    using (var newReader = XmlReader.Create(newMemoryStream, xmlReaderSettings))
    {
        newReader.MoveToContent(); //*

        Doing some stuff...
    }
}

这篇关于如何克隆MemoryStream对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆