Sauvegarder une liste en java
Résolu/Fermé
AigretteSidarta
-
27 nov. 2011 à 18:19
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 30 nov. 2011 à 20:25
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 30 nov. 2011 à 20:25
A voir également:
- Sauvegarder une liste en java
- Liste déroulante excel - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Liste déroulante en cascade - Guide
- Jeux java itel football - Télécharger - 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
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
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
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
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.