流不可读错误

Arn*_*ohn 18 c# memorystream xml-serialization

我在声明中收到"Stream is not readable"的消息:

using (StreamReader sr = new StreamReader(ms))
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这里发布的提示但没有成功.谢谢您的帮助.

这是我的代码:

XmlSerializer xmlSerializer = new XmlSerializer(typeof(Conflict));
//Serialize Conflicts array to memorystream as XML
using (MemoryStream ms = new MemoryStream())
{
    using (StreamWriter sw = new StreamWriter(ms))
    {
        foreach (Conflict ct in Conflicts)      
            xmlSerializer.Serialize(sw, ct);

        sw.Flush(); //Site tip
        ms.Position = 0;  //Site tip
    }
    //Retrieve memory stream to string
    using (StreamReader sr = new StreamReader(ms))
    {
        string conflictXml = String.Format(CultureInfo.InvariantCulture, "{0}</NewDataSet>",
Run Code Online (Sandbox Code Playgroud)

Cha*_*own 22

当这段代码完成时,它还将处理附加的MemoryStream

using (StreamWriter sw = new StreamWriter(ms))
{
    foreach (Conflict ct in Conflicts)
        xmlSerializer.Serialize(sw, ct);
    sw.Flush(); //Site tip
    ms.Position = 0;  //Site tip
}
Run Code Online (Sandbox Code Playgroud)

删除using语句,并在完成后手动处理流

StreamWriter sw = new StreamWriter(ms);

foreach (Conflict ct in Conflicts)
    xmlSerializer.Serialize(sw, ct);
sw.Flush(); //Site tip
ms.Position = 0;  //Site tip

// other code that uses MemoryStream here...

sw.Dispose();
Run Code Online (Sandbox Code Playgroud)

  • 在 .Net 4.5 中,有一个 StreamWriter 重载,可以指定该重载使流保持打开状态:https://msdn.microsoft.com/EN-US/library/gg712853(v=VS.110,d=hv.2).aspx (2认同)