Vous êtes sur la page 1sur 2

Sauvegarder des données

Pour pouvoir sauvegarder une classe, il faut implémenter l’interface «


Serializable » qui n’a aucune méthode à redéfinir car en faite ce n’est
qu’une interface marqueur pour savoir qu’on peut sauvegarder la classe
en question. Si une classe implémente l’interface « Serializable » alors
tous ses classes filles l’implémentent automatiquement sans les déclarer
en tant qu’elle implémente cette interface. Pour sauvegarder notre classe,
on utilise la classe « ObjectOutputStream » et pour lire notre classe on
utilise « ObjectInputStream ».

:::::::::::::::::::::::::::::::::::::::::::::::::::::
import java.io.Serializable; // Importer le package
public class Graphe implements Serializable{ // Implémenter la classe
private int[][] matriceAdjacence;
private int taille;
public Graphe(int[][] matrice, int taille){
this.matriceAdjacence = matrice;
this.taille = taille;
}
public int[][] getMatriceAdjacence(){
return this.matriceAdjacence;
}
public int getTaille(){
return this.taille;
}
public String toString(){
String str = “”;
str += “On a un graphe de taille : ” + this.taille+" et sa matrice d’adjacence est:\n" ;
str += this.matriceAdjacence ;
return str ;
}
}

::::::::::::::::: classe déclarée Serializable::::::::::::::::::::::::::::::::::::::

import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
int[][] matrice = new int[4][4];
int[][] matrice2 = new int[4][4];
Scanner sc = new Scanner(System.in);
for(int i = 0; i < 4; ++i){
for(int j = 0; j < 4; ++j){
matrice[i][j] = sc.nextInt();
matrice2[i][j] = sc.nextInt();
}
}
// declaration des objets ois et oos pour lire et ecrire dans un fichier
ObjectInputStream ois;
ObjectOutputStream oos;
try {
oos = new ObjectOutputStream( // sauvgarder notre classe
new BufferedOutputStream( //:l’écriture des données respectivement
new FileOutputStream( // instance de l’object
new File("graphe.txt")))); // creation de fichier
//Nous allons écrire chaque objet dans le fichier
oos.writeObject(new Graphe(matrice, 4));
oos.writeObject(new Graphe(matrice2, 4));
//NE PAS OUBLIER DE FERMER LE FLUX ! ! !
oos.close();
//On récupère maintenant les données !
BufferedInputStream Permet d’avoir un tampon dès qu’il soit rempli on aura accès aux
données.
ois = new ObjectInputStream( // lire notre classe
new BufferedInputStream( //lecture des données respectivement
new FileInputStream( //instance de l’object
new File("graphe.txt"))));
try {
System.out.println("Affichage des graphes :");
System.out.println("*************************\n");
System.out.println(((Graphe)ois.readObject()).toString());
System.out.println(((Graphe)ois.readObject()).toString());
}catch (ClassNotFoundException e) {
e.printStackTrace();
}
ois.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
}
}

Vous aimerez peut-être aussi