Enregistrer tableau.

Fermé
drspinoza Messages postés 51 Date d'inscription dimanche 25 octobre 2015 Statut Membre Dernière intervention 9 mai 2016 - 13 déc. 2015 à 07:10
 Utilisateur anonyme - 13 déc. 2015 à 21:16
Bonjour,
Je me demandé comment faire pour enregistrer des tableaux que l'on a créer dans un main.
Puis ensuite les réutiliser lors de la relance du programme.


A voir également:

1 réponse

Utilisateur anonyme
13 déc. 2015 à 09:27
Bonjour,

Je ne connais pas Java, donc je ne te donnerai pas de code en exemple, mais il faut enregistrer les données quelque part, et au démarrage regarder si un enregistrement existe et le charger le cas échéant.
Pour l'enregistrement tu as beaucoup de solutions, en voici quelques unes:
  • fichiers textes "en ligne": taboulés, csv, ....
  • fichiers xml ou json.
  • base de données.
  • tableur (excel, .....)



--
0
faseldi Messages postés 279 Date d'inscription dimanche 9 novembre 2014 Statut Membre Dernière intervention 3 janvier 2017 20
13 déc. 2015 à 11:58
personnellement j'utilise
http://www.jdom.org/ pour le xml, qui reste le plus simple quand on débute,
même si le jdbc pour la base de données est pas compliqué :)
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
13 déc. 2015 à 12:05
Bonjour,

Il y a aussi les fichiers binaire.
En Java toutes les classes qui implémentent l'interface Serializable peuvent enregistrer leurs objets tels qu'ils sont en mémoire directement dans un fichier.

Dans tous les cas tu devrais regarder les OutputStram et InputStream, en particulier les FileOutputStream/FileInputStream et pour la sérialisation ObjectOutputStream/ObjectInputStream.

Exemple de (dé)sérialisation :

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Arrays;

public class Test {

    public static void main(String[] args) {
        File backup = new File("backup.ser");
        String[] tabDefault = { "a", "b", "c" };
        String[] tab = loadBackup(backup, tabDefault);

        // [a, b, c] la 1ère fois, [1, 2, 3] ensuite
        System.out.println(Arrays.toString(tab));

        tab = new String[] { "1", "2", "3" };
        saveBackup(backup, tab);
    }

    private static void saveBackup(File backup, Object obj) {
        try {
            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(backup));
            out.writeObject(obj);
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @SuppressWarnings("unchecked")
    private static <E> E loadBackup(File backup, E defaultObj) {
        try {
            ObjectInputStream in = new ObjectInputStream(new FileInputStream(backup));
            E obj = (E) in.readObject();
            in.close();
            return obj;
        } catch (IOException | ClassNotFoundException e) {
            System.err.println(e);
            return defaultObj;
        }
    }
}

Remarque : le fichier "backup.ser" étant au format binaire, son contenu n'est pas directement éditable, il est fait par Java, pour Java.
Voici son contenu pour mon exemple (on peut deviner une partie des valeurs)
Si le contenu d'un fichier devient trop important on peut le zipper, voir les classes ZipOutputStream/ZipInputStream.
0
drspinoza Messages postés 51 Date d'inscription dimanche 25 octobre 2015 Statut Membre Dernière intervention 9 mai 2016
13 déc. 2015 à 19:30
Ok merci,
Est-il possible de remplacer le backup.set par un .txt ?
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
13 déc. 2015 à 20:46
Dans mon exemple j'ai construit un fichier binaire de donnée sérialisée Java, l'extension pour ce genre de données est .ser
Pour un fichier .txt le contenu attendu devrait être textuel, donc voir plutôt les propositions de Whismeril.
0
drspinoza Messages postés 51 Date d'inscription dimanche 25 octobre 2015 Statut Membre Dernière intervention 9 mai 2016
13 déc. 2015 à 20:48
Ok je vais continuer à chercher.
Parce que le fichier crée doit être lisible par l'Humain.
0