Как правильно открыть FileStream для использования с XDocument - PullRequest
7 голосов
/ 10 ноября 2008

Я хочу добавить некоторые узлы в документ XML с помощью Linq2XML. Файл, о котором идет речь, используется другими процессами, и они должны быть в состоянии прочитать файл, пока я обновляю его. Поэтому я пришел к этому решению, которое, очевидно, не является правильным способом (метод doc.Save () не работает и говорит, что файл используется другим процессом):

using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
{
  doc = XDocument.Load(new StreamReader(fs));
  doc.Root.Add(entry);
  doc.Save(filename);
  fs.Close();
}

Любая помощь очень важна.

1 Ответ

8 голосов
/ 10 ноября 2008

Загрузите документ, закройте поток, сохраните его снова. Это также означает, что вы можете открыть его более простым способом:)

XDocument doc;

using (StreamReader reader = File.OpenText(filename))
{
  doc = XDocument.Load(reader);
  doc.Root.Add(entry);
}

doc.Save(filename);
...