Voici un exemple de sauvegarde par sérialisation.
Perso, j'aime pas, ca fait un fichier binaire imbittable pardonnez moi l'expression et en plus il est bien plus gros qu'un fichier binaire pure.
Alors bien sûr l'avantage lorsqu'on code comme un porc (Grrrrrrrruicccckk) ca permet de dropper toutes les classes à sauver sur le disque dur et à réfléchir ensuite ;p (Déjà donné ce genre de situations...)
Enfin, avec le tutorial d'avant vous avez tout ce qu'il faut ;p
Source / Exemple :
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
namespace T01_Core_Serialization
{
[Serializable()] //Set this attribute to all the classes that you define to be serialized
class cMyHeaderToSave : ISerializable
{
public int m_iFileID;
public string m_szMyBuffer;
// Default constructor
public cMyHeaderToSave ()
{
m_iFileID = 2048;
m_szMyBuffer = "My String";
}
// Deserialization constructor.
public cMyHeaderToSave(SerializationInfo info, StreamingContext ctxt)
{
//Get the values from info and assign them to the appropriate properties
m_iFileID = (int) info.GetValue ("MyFileIdVarToSave" , typeof(int));
m_szMyBuffer = (string) info.GetValue ("MyStringVarToSave" , typeof(string));
}
//Serialization function.
public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
{
//You can use any custom name for your name-value pair. But make sure you
// read the values with the same name. For ex:- If you write EmpId as "EmployeeId"
// then you should read the same with "EmployeeId"
info.AddValue("MyFileIdVarToSave", m_iFileID);
info.AddValue("MyStringVarToSave", m_szMyBuffer);
}
};
/// <summary>
/// Summary description for T01_Core_Serialization.
/// </summary>
class T01_Core_Serialization
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
/*
// Write
Stream oWriteBinStream = File.Open("MyFile.bin", FileMode.Create);
BinaryFormatter oWriteFormatter = new BinaryFormatter ();
cMyHeaderToSave oWriteHeader = new cMyHeaderToSave ();
oWriteHeader.m_iFileID = 4096;
oWriteHeader.m_szMyBuffer = "Another String";
oWriteFormatter.Serialize (oWriteBinStream, oWriteHeader);
oWriteBinStream.Close ();
/*
// Read
Stream oReadBinStream = File.Open("MyFile.bin", FileMode.Open);
BinaryFormatter oReadFormatter = new BinaryFormatter();
cMyHeaderToSave oReadHeader = new cMyHeaderToSave();
// Read header
oReadHeader = (cMyHeaderToSave)oReadFormatter.Deserialize(oReadBinStream);
oReadBinStream.Close ();
}
}
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.