Serialisation Java : Serialiser et Deserialiser des objets

2009-11-29

Java

Pour un projet réalisé en cours, je me suis intéressé à comment serialiser et deserialiser des objets en Java histoire de les faire persister (un peu lourd de tout retaper à chaque fois). Commençons par importer les librairies nécessaires et par implémenter l'interface nécessaire dans notre classe :
import java.io.Serializable;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class Main implements Serializable {
	...
}
Serialisation
Maintenant, nous créons par exemple un objet User que nous souhaitons sérialiser dans un fichier user.serial. Pour celà, nous créons un flux de sortie avec FileOutputStream dans le fichier user.serial puis nous écrivons dans ce flux grâce à l'objet ObjectOutputStream comme suit :
User u = new User("Vincent", "Composieux", 22);
FileOutputStream fos = new FileOutputStream("user.serial");
ObjectOutputStream oos= new ObjectOutputStream(fos);
try {
	// Ecriture dans le flux de sortie
	oos.writeObject(u);

	// Vide le tampon
	oos.flush();

	} finally {
		try {
			oos.close();
		} finally {
		fos.close();
	}
}
Biensûr, il ne faut pas oublier de fermer les flux !
Deserialisation
On continue ensuite avec la déserialisation sur le même principe mais à l'envers :
User u = null;
try {
	// Ouverture du flux d'entrée sur le fichier
	FileInputStream fis = new FileInputStream("user.serial");
	ObjectInputStream ois= new ObjectInputStream(fis);

	try {
		// Lecture du flux et attribution à l'objet u
		u = (User) ois.readObject();
	} finally {

		// Fermeture des flux
		try {
		ois.close();
		} finally {
			fis.close();
		}
	}
} catch(IOException ioe) {
	ioe.printStackTrace();
} catch(ClassNotFoundException cnfe) {
	cnfe.printStackTrace();
}
Voilà, on sait maintenant comment serialiser/deserialiser des objets en Java, rien de bien compliquer donc, il me reste maintenant plus qu'à incorporer ça dans mon petit projet.

Comments