我注意到将数据写入 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 方法是否会提供原子写入事件和/或防止写入问题?
任何人都可以解释这是否真的有必要,或者只是向我的项目添加不必要的代码行的一种矫枉过正的方法?
最佳答案
MemoryStream
版本在这种情况下很浪费。 MemoryStream
如果您想执行类似于 Stream
的工作,但不想要实际文件,则很有用。如果您正在写一个文件,那么只需写入该文件即可。这避免了在内存中缓冲所有数据的需要。
关于c# - 使用 MemoryStream 写出到 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/486843/