我注意到将数据写入 XML 文件的两种不同方法(为简洁起见,省略了错误处理)。
第一种方法是构建 XML 文档,然后简单地将 XML 保存到文件中:
using (XmlWriter writer = XmlWriter.Create(fileName))
{
writer.WriteStartDocument(true);
writer.WriteStartElement("parentelement");
writer.WriteEndElement();
writer.WriteEndDocument();
}
第二种方法是创建一个 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();
}
我猜想使用 MemoryStream 的逻辑是确保在尝试保存文件之前可以构建 XML 文件。当您将条目添加到 XML 文件中时,MemoryStream 方法是否会提供原子写入事件和/或防止写入问题?
谁能解释这是否真的有必要,或者只是一种在我的项目中添加不必要的代码行的矫枉过正的方式?