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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 184 fois - Téléchargée 29 fois

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

Ajouter un commentaire

Commentaire

ssebounet
Messages postés
162
Date d'inscription
jeudi 21 mars 2002
Statut
Membre
Dernière intervention
22 octobre 2008

Bonjour

La en fait tu serialise sur le disque dur. moi je recherche la serialisation au serveur.
Elle se fait toute seule.
Je souahiterai en fait serialiser compresser et envoyer au serveur qui decompressera deserialisera et pourra lire les donnees.
sais tu comment faire???
J'ai reussi cote serveur mais coter client je ne sais pas faire. merci pour ton aide.
séb

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.