2008-11-10 64 views
7

我想使用Linq2XML將一些節點附加到xml文檔。有問題的文件正在被其他進程使用,他們應該能夠在我更新文件時讀取文件。所以,我想出了這個解決方案,這顯然是不正確的方法(該方法doc.Save()失敗,並說另一個進程正在使用的文件):如何正確打開FileStream以使用XDocument

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(); 
} 

任何幫助是極大appreceated。

回答

8

加載文檔,關閉流,再次保存。這也意味着你可以在一個更簡單的方式打開它:)

XDocument doc; 

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

doc.Save(filename); 
+0

謝謝您的回答,喬恩。如果我使用這個版本,我可以確保其他進程可以打開同一個文件進行讀取訪問嗎? – Mats 2008-11-10 13:09:29