c# xml serialization xml-serialization xmlserializer

FileMode.Open y FileMode.OpenOrCreate la diferencia cuando existe un archivo? c#error?



xml serialization (1)

Acabo de reproducir ese tema. Como escribí en el comentario.

FileMode.Open borra el contenido del archivo mientras que FileMode.OpenOrCreate no lo hace.

Parece que el nuevo contenido del archivo es un char más corto que el anterior, por eso ves ">" al final.

Si está escribiendo el archivo, utilice FileMode.Create que debería FileMode.Create .

He escrito ese código:

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

Cuando estoy usando FileMode.Open todo está bien, y la salida es ex así:

<?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>

pero cuando lo cambio a FileMode.OpenOrCreate salida cambiará a:

<?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>>

lo que hace que todo el archivo xml se corrompa debido al signo > adicional al final.

¿Es esto explicable o es un error de C #?