使用MemoryStream写出XML

Dsc*_*duc 8 c# xml memorystream

我注意到有两种不同的方法可以将数据写入XML文件(为简洁起见,省略了错误处理).

第一种方法是构建XML文档,然后将XML保存到文件中:

using (XmlWriter writer = XmlWriter.Create(fileName))
{
    writer.WriteStartDocument(true);
    writer.WriteStartElement("parentelement");
    writer.WriteEndElement();
    writer.WriteEndDocument();
}
Run Code Online (Sandbox Code Playgroud)

第二种方法是创建MemoryStream,然后将MemoryStream保存到文件中:

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
MemoryStream ms = new MemoryStream();
using (XmlWriter writer = XmlWriter.Create(ms, settings))
{
    writer.WriteStartDocument(true);
    writer.WriteStartElement("parentelement");
    writer.WriteEndElement();
    writer.WriteEndDocument();
}

using (FileStream fs = File.Open(fileName, FileMode.Create, FileAccess.Write))
{
    ms.WriteTo(fs);
    ms.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

我猜测使用MemoryStream的逻辑是确保在尝试保存文件之前可以构建XML文件.在将条目添加到XML文件中时,MemoryStream方法是否会提供Atomic写入事件和/或防止写入问题?

任何人都可以解释这是否真的有必要或只是一种过度杀戮的方式来添加不必要的代码行到我的项目?

Mar*_*ell 15

这个MemoryStream版本在这个场合很浪费.MemoryStream如果你想执行Stream类似的工作,但不想要一个实际的文件,这是很有用的.如果您正在编写文件,则只需写入该文件即可.这避免了缓冲内存中所有数据的需要.