c# - जब फ़ाइल मौजूद हो तो FileMode.Open और FileMode.OpenOrCreate अंतर? ग#बग?



xml serialization (1)

मैंने अभी उस मुद्दे को पुन: पेश किया है। जैसा कि मैंने टिप्पणी में लिखा है।

FileMode.Open फ़ाइल की सामग्री को मिटा देता है जबकि FileMode.OpenOrCreate नहीं करता है।

ऐसा लगता है कि फ़ाइल की नई सामग्री पिछले की तुलना में एक चार्ट कम है, इसलिए आपको अंत में ">" दिखाई देता है।

यदि आप फ़ाइल का उपयोग कर रहे हैं FileMode.Create जो आप के लिए करना चाहिए लिख रहे हैं।

मैंने वह कोड लिखा है:

public void Save()
{
    using (FileStream fs = new FileStream(Properties.Settings.Default.settings_file_path, FileMode.Open))
    {
        XmlSerializer ser = new XmlSerializer(typeof(MySettings));
        ser.Serialize(fs, this);
    }
}

जब मैं FileMode.Open का उपयोग कर रहा FileMode.Open सब कुछ अच्छा है, और आउटपुट इस तरह से है:

<?xml version="1.0"?>
<MySettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <settingsList>
        <Setting>
            <Value>12</Value>
            <Name>A0</Name>
            <Type>MEASUREMENT</Type>
        </Setting>
        <Setting>
            <Value>5000</Value>
            <Name>C0</Name>
            <Type>MEASUREMENT</Type>
        </Setting>
    </settingsList>
</MySettings>

लेकिन जब मैं इसे FileMode.OpenOrCreate बदल FileMode.OpenOrCreate आउटपुट बदल जाएगा:

<?xml version="1.0"?>
<MySettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <settingsList>
        <Setting>
            <Value>12</Value>
            <Name>A0</Name>
            <Type>MEASUREMENT</Type>
        </Setting>
        <Setting>
            <Value>5000</Value>
            <Name>C0</Name>
            <Type>MEASUREMENT</Type>
        </Setting>
    </settingsList>
</MySettings>>

अंत में अतिरिक्त > साइन के कारण पूरी xml फ़ाइल दूषित हो गई है।

यह समझाने योग्य है या इसकी ग # बग?





xmlserializer