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 queFileMode.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 #?