2008-11-10 2 views
7

Linq2XML을 사용하여 XML 문서에 일부 노드를 추가하려고합니다. 문제의 파일이 다른 프로세스에서 사용 중이므로 업데이트하는 동안 해당 파일을 읽을 수 있어야합니다. 그래서 나는 분명히 올바른 방법이 아니다 (메소드 doc.Save() 실패하고 다른 프로세스가 파일을 사용하고 있음을 말한다)이 솔루션을 내놓았다 :XDocument를 사용하기 위해 FileStream을 올바르게 여는 방법

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

+0

저장을 호출하면 읽지 못할 수 있습니다. 문제가 있습니까? File.OpenText가 공유의 관점에서하는 일을 기억할 수는 없지만 필요하다면 옳은 일을하는 StreamReader 생성자를 쉽게 확인하고 사용할 수 있습니다. –

관련 문제