XMLファイルにデータを書き出すための2つの異なるアプローチに気づきました(簡潔にするためにエラー処理は省略されています)。
最初の方法では、XMLドキュメントを作成してから、XMLをファイルに保存するだけです。
using (XmlWriter writer = XmlWriter.Create(fileName))
{
writer.WriteStartDocument(true);
writer.WriteStartElement("parentelement");
writer.WriteEndElement();
writer.WriteEndDocument();
}
2番目の方法では、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メソッドは、アトミック書き込みイベントを提供しますか、および/またはXMLファイルにエントリを追加している間の書き込みの問題から保護しますか?
これが実際に必要なのか、それともプロジェクトに不要なコード行を追加するためのやり過ぎな方法なのか、誰かが説明できますか?