[c#] tutorial basique (fichier binaire, sérialisation)

Contenu du snippet

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

A voir également

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.