Exceptions et gestion des fichiers : sauvegarder et charger un niveau
CHAPITRE 8
179
else if (keyboardState.IsKeyDown(Keys.S) && lastKeyboardState.IsKeyUp(Keys.S) && map
➥!= null)
{
FileStream file;
if (!File.Exists(Path.Combine(container.Path, "test.sav")))
file = File.Create(Path.Combine(container.Path, "test.sav"));
else
file = File.Open(Path.Combine(container.Path, "test.sav"),
➥FileMode.Truncate);
BinaryFormatter serializer = new BinaryFormatter();
serializer.Serialize(file, map);
file.Close();
}
Si vous vous rendez dans le répertoire de sauvegarde du jeu, vous verrez le fichier
test.sav. Vous pourrez ensuite l’ouvrir et constater que les données ne sont pas du tout
intelligibles (figure-8-11).
Vous pouvez également sérialiser les données sous forme de fichier XML. L’espace de
noms à utiliser est System.XML.Serialization. Une classe peut être sérialisée en XML
uniquement si elle possède un constructeur sans paramètres. Il faut également que tous
les attributs à sérialiser possèdent un accesseur en lecture et un autre en écriture. S’il y a
des paramètres que la sérialisation doit ignorer, utilisez l’attribut [XmlIgnore].
Du côté de la classe Chapitre_8, instanciez un objet XmlSerializer auquel vous devrez
passer le type d’objet à sérialiser. Servez-vous pour cela de l’opérateur typeof(). Enfin,
comme pour le BinaryFormatter, utilisez la méthode Serialize() qui attend les mêmes
arguments. N’oubliez pas de fermer le flux après utilisation.
Figure 8-11
Les deux fichiers créés par la classe exemple
=Labat FM.book Page 179 Vendredi, 19. juin 2009 4:01 16
CHAPITRE 8
179
else if (keyboardState.IsKeyDown(Keys.S) && lastKeyboardState.IsKeyUp(Keys.S) && map
➥!= null)
{
FileStream file;
if (!File.Exists(Path.Combine(container.Path, "test.sav")))
file = File.Create(Path.Combine(container.Path, "test.sav"));
else
file = File.Open(Path.Combine(container.Path, "test.sav"),
➥FileMode.Truncate);
BinaryFormatter serializer = new BinaryFormatter();
serializer.Serialize(file, map);
file.Close();
}
Si vous vous rendez dans le répertoire de sauvegarde du jeu, vous verrez le fichier
test.sav. Vous pourrez ensuite l’ouvrir et constater que les données ne sont pas du tout
intelligibles (figure-8-11).
Vous pouvez également sérialiser les données sous forme de fichier XML. L’espace de
noms à utiliser est System.XML.Serialization. Une classe peut être sérialisée en XML
uniquement si elle possède un constructeur sans paramètres. Il faut également que tous
les attributs à sérialiser possèdent un accesseur en lecture et un autre en écriture. S’il y a
des paramètres que la sérialisation doit ignorer, utilisez l’attribut [XmlIgnore].
Du côté de la classe Chapitre_8, instanciez un objet XmlSerializer auquel vous devrez
passer le type d’objet à sérialiser. Servez-vous pour cela de l’opérateur typeof(). Enfin,
comme pour le BinaryFormatter, utilisez la méthode Serialize() qui attend les mêmes
arguments. N’oubliez pas de fermer le flux après utilisation.
Figure 8-11
Les deux fichiers créés par la classe exemple
=Labat FM.book Page 179 Vendredi, 19. juin 2009 4:01 16
