Я заметил два разных подхода к записи данных в файл 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 может быть создан перед попыткой сохранить файл. Будет ли метод MemoryStream обеспечивать событие записи Atomic и / или защищать от проблем записи при добавлении записей в файл XML?
Может кто-нибудь объяснить, действительно ли это необходимо или это просто излишний способ добавить ненужные строки кода в мой проект?