2008-11-10 10 views
7

के साथ उपयोग के लिए फ़ाइलस्ट्रीम को सही तरीके से कैसे खोलें I Linq2XML का उपयोग करके किसी XML दस्तावेज़ में कुछ नोड्स जोड़ना चाहते हैं। प्रश्न में फ़ाइल का उपयोग अन्य प्रक्रियाओं द्वारा किया जा रहा है और जब मैं इसे अद्यतन करता हूं तो उन्हें फ़ाइल को पढ़ने में सक्षम होना चाहिए। इसलिए मैं इस समाधान है, जो स्पष्ट रूप से सही तरीका नहीं है (विधि doc.Save() विफल रहता है और कहता है कि किसी अन्य प्रक्रिया फ़ाइल का उपयोग किया जाता है) के साथ आया था: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

+0

ठीक है, जब आप सहेजते हैं तो वे इससे पढ़ नहीं सकते हैं ... क्या यह एक समस्या है? मुझे याद नहीं है कि फ़ाइल.ऑनटेक्स्ट साझा करने के मामले में क्या करता है, लेकिन यदि आप आवश्यक हो तो स्ट्रीमरडर कन्स्ट्रक्टर को आसानी से जांच और उपयोग कर सकते हैं। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^