Enregistrer tableau.

drspinoza Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
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
 
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   Statut Membre Dernière intervention   20
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
Ok merci,
Est-il possible de remplacer le backup.set par un .txt ?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
Ok je vais continuer à chercher.
Parce que le fichier crée doit être lisible par l'Humain.
0