Sauvegarder une liste en java
Résolu/Fermé
AigretteSidarta
-
27 nov. 2011 à 18:19
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 30 nov. 2011 à 20:25
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 30 nov. 2011 à 20:25
A voir également:
- Sauvegarder une liste en java
- Liste déroulante excel - Guide
- Liste de numéro de téléphone suspect 07 ✓ - Forum Mobile
- Scanf en java ✓ - Forum Java
- Annuaire inversé gratuit liste rouge - Forum Internet / Réseaux sociaux
- Jeux java itel ✓ - Forum Jeux vidéo
2 réponses
Merci beaucoup pour le code, mais quand je lance le programme 2, je voudrais recréer mes 4 listes pour qu'elles soient telles que celles que j'ai enregistrées.
Que dois-je ajouter ?
Que dois-je ajouter ?
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
27 nov. 2011 à 18:53
27 nov. 2011 à 18:53
Tu peux t'orienter vers la sérialisation, mais uniquement si les éléments contenus dans la liste sont serializable. Sinon il faut que tu trouves un moyen de représenter tes éléments dans un format texte et être capable de les reconstruire à partir de ce texte
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
27 nov. 2011 à 19:55
27 nov. 2011 à 19:55
Voici un exemple assez simple de sérialisation et désérialisation.
Ici je prends une ArrayList<Integer>, une LinkedList<Double> et un HashSet<String> que j'enregistre tous les trois dans le même fichier, puis je les relis à partir du fichier pour les afficher :
Ici je prends une ArrayList<Integer>, une LinkedList<Double> et un HashSet<String> que j'enregistre tous les trois dans le même fichier, puis je les relis à partir du fichier pour les afficher :
public static <E extends Collection<? extends Serializable>> void enregistrer(String fileName, E...toSave) throws IOException
{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(fileName)));
oos.writeInt(toSave.length); // on indique le nombre d'objets
for (E e : toSave)
oos.writeObject(e); // on écrit l'objet
oos.close();
}
@SuppressWarnings("unchecked")
public static <E extends Collection<? extends Serializable>> List<E> charger(String fileName) throws IOException, ClassNotFoundException
{
LinkedList<E> list = new LinkedList<E>();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File(fileName)));
int n=ois.readInt(); // on lit le nombre d'objets
for (int i=0; i<n; i++)
list.add((E) ois.readObject()); // on lit l'objet
ois.close();
return list;
}
private static <E> void afficher(Collection<? extends Collection<E>> coll)
{
for (Collection<E> c : coll)
{
System.out.print(c.getClass().getSimpleName()+" \t-->\t");
for (E e : c)
System.out.print(e.getClass().getSimpleName()+"\t"+e+"\t");
System.out.println();
}
}
@SuppressWarnings("unchecked")
public static void main(String...args) throws IOException, ClassNotFoundException
{
// Programme 1
ArrayList<Integer> liste1 = new ArrayList<Integer>();
liste1.add(1);
liste1.add(2);
liste1.add(3);
LinkedList<Double> liste2 = new LinkedList<Double>();
liste2.add(4.0);
liste2.add(5.0);
liste2.add(6.0);
HashSet<String> liste3 = new HashSet<String>();
liste3.add("7");
liste3.add("8");
liste3.add("9");
// Fin du programme 1
enregistrer("D:\\test.txt",liste1,liste2,liste3);
// Début du programme 2
List<Collection<Serializable>> liste = charger("D:\\test.txt");
// Programme 2
System.out.println("Données chargées : ");
afficher(liste);
}
30 nov. 2011 à 20:25
Remarque : les listes ne seront pas exactement pareil, les contenus seront égaux mais les références des listes et des contenus seront différentes entre le premier et le deuxième programme.
public static void enregistrer(String fileName,ArrayList<Integer> toSave) throws Exception { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(fileName))); oos.writeObject(toSave); oos.close(); } @SuppressWarnings("unchecked") public static ArrayList<Integer> charger(String fileName) throws Exception { ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File(fileName))); ArrayList<Integer> liste = (ArrayList<Integer>) ois.readObject(); ois.close(); return liste; } public static void main(String...args) throws Exception { Integer n = new Integer(42); ArrayList<Integer> liste1 = new ArrayList<Integer>(); liste1.add(n); liste1.add(n); enregistrer("D:\\test.txt",liste1); ArrayList<Integer> liste2 = charger("D:\\test.txt"); System.out.println(liste1.get(0).equals(liste1.get(1))); System.out.println(liste1.get(0)==liste1.get(1)); System.out.println(); System.out.println(liste2.get(0).equals(liste2.get(1))); System.out.println(liste2.get(0)==liste2.get(1)); System.out.println(); System.out.println(liste1.equals(liste2)); System.out.println(liste1==liste2); System.out.println(); System.out.println(liste1.get(0).equals(liste2.get(0))); System.out.println(liste1.get(0)==liste2.get(0)); }