Sauvegarder un ArrayList dans un fichier en Java

Java fournit un mécanisme où un objet peut être représenté comme une séquence de bits qui contient les données de cet objet et ces informations: son type et les types des données sauvegardées dans l'objet.

Après que l'objet sérialisé a été bien enregistré dans le fichier, il peut être lu sans problèmes à partir du fichier et le dé-sérialiser ensuite. Les bits qui représentent l'objet et ses données peuvent être utilisés pour recréer l'objet dans la mémoire.

Les classes ObjectInputStream et ObjectOutputStream sont deux flux de données de haut niveau qui contiennent les méthodes pour enregistrer et lire le contenu d'un ArrayList à partir d'un fichier.

ArrayList est sérialisable par défaut. Cela veut dire que vous n'avez pas besoin d'implémenter l'interface Serializable dans le but de sérialiser un ArrayList.

Sauvegarder un ArrayList dans un fichier

Cette classe crée un fichier test qui va avoir un objet ArrayList sous forme d'un flux de bits. On utilise le fichier test pour sauvegarder et recréer l'objet à partir de flux de bits. Notez que nous n'avons pas implémenter l'interface Serializable dans cet exemple parce que ArrayList est déjà sérialisée par défaut.

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

public class SerializeArrayList {

public static void main(String[] args) {
ArrayList al=new ArrayList();
al.add("hello world");
al.add("bonjour le monde");

try {
FileOutputStream fileOut = new FileOutputStream("test");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(al);
out.close();
fileOut.close();
System.out.println("\nSerialisation terminée avec succès...\n");

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Exécution:

Serialisation terminée avec succès...
Le contenu du fichier binaire créé après l'ouverture ressemble à ceci:

serialize arraylist java

Lire et créer un ArrayList à partir d'un fichier

Dans cette classe, on récupère le flux de données sous forme de bits à partir du fichier test que l'on a stocker en utilisant la classe ci-dessus. On convertie l'objet retourné en ArrayList avec le cast et on affiche les éléments de ArrayList. En observant la sortie, on obtient les mêmes éléments dont on a ajouté à la liste avant la sérialisation.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;

public class SerializeArrayList {

public static void main(String[] args) {

//lecture
ArrayList<String> arraylist= new ArrayList<String>();
try {
FileInputStream fileIn = new FileInputStream("test");
ObjectInputStream ois = new ObjectInputStream(fileIn);
arraylist = (ArrayList) ois.readObject();
ois.close();
fileIn.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println("Lire les données: \n");
for(String o:arraylist)
System.out.println(o);
}
}
Exécution:

Lire les données: 

hello world
bonjour le monde
C'est tout! N'hésitez pas à poser vos questions ;)