Sauvegarder une liste en java
Résolu
AigretteSidarta
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
A voir également:
- Liste java
- Liste déroulante excel - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
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 ?
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
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); }
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.