IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Studio Java Discussion :

Sauvegarder les données d'une application


Sujet :

Android Studio Java

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Points : 151
    Points
    151
    Par défaut Sauvegarder les données d'une application
    Bonjour,
    j'ai besoin de sauvegarder en interne des données (des chaînes de caractères) propres à une application. Ceci dans un fichier de type texte dans lequel seront ajouté les lignes au fur et à mesure des besoins. J'ai beaucoup lu au sujet de ce type de sauvegarde mais je bloque.
    Mon code où je teste un peu tout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Context context = getApplicationContext();
    File file = new File(context.getFilesDir(), "test.txt");
    if(file.canWrite())
        Log.d("DEBUG", "you can write");
    else Log.d("DEBUG", "you cannot write");
     
    if(file.canRead())
        Log.d("DEBUG", "you can read");
    else Log.d("DEBUG", "you cannot raed");
     
     
    FileWriter fw = new FileWriter(file, true);    //true pour le mode append
    BufferedWriter bw = new BufferedWriter(fw);
    String msg = "Hello folks";
    bw.write(msg, 0, msg.length());
    fw.close();
     
    char rp[] = new char[123];
    FileReader fr = new FileReader(file);
    BufferedReader br = new BufferedReader(fr);
    br.read(rp, 0, 10);
    Log.d("DEBUG", "--> rp " + rp);
    fr.close();
     
    if(file.exists())
        Log.d("DEBUG", "file " + file.getName() + " exists");
    else Log.d("DEBUG", "file " + file.getName() + " does not exists");
     
    Log.d("DEBUG", "file " + file.getName() + " is " + file.length() + " bytes");
    A l'exécution, aucune exception n'est levée.
    Affichage --> you can write et you can read
    Le fichier test.txt existe mais le contenu du tableau rp n'a pas de sens.
    Quelle que soit le contenu de la string msg, le fichier ne comporte que 5 bytes.

    Je viens du C++ et suis assez peu familier d'Android Studio et Java (pour le moment). J'ai l'impression que je ne suis pas très loin de la solution mais je patine.
    SI quelqu'un a une idée...
    Merci.

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Je vois que tu utilises un BufferedWriter à qui il manque le flush
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    FileWriter fw = new FileWriter(file, true);    //true pour le mode append
    BufferedWriter bw = new BufferedWriter(fw);
    String msg = "Hello folks";
    bw.write(msg, 0, msg.length());
    bw.flush();
    fw.close();
    Mais ça marche tout aussi bien sans le BufferedWriter si tu écris simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            FileWriter fw = new FileWriter(file, true);    //true pour le mode append
            String msg = "Hello folks";
            fw.write(msg);
            fw.close();
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Points : 151
    Points
    151
    Par défaut
    Bonjour et merci pour ta réponse.
    Ca ne change rien, mais je pense que je ne maîtrise pas bien la manipulation des E/S. Je suis là dessus à temps partiel...

Discussions similaires

  1. Analyser les données d'une application
    Par GemRire dans le forum Autres systèmes
    Réponses: 0
    Dernier message: 19/06/2020, 03h28
  2. [MySQL-5.6] Sauvegarder les données d'une table dans un fichier
    Par wam111 dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/04/2014, 16h56
  3. A quel moment on charge les données dans une application silverlight
    Par solid_sneak06 dans le forum Silverlight
    Réponses: 0
    Dernier message: 24/05/2012, 17h12
  4. Récupérer les données d'une application
    Par ludovic74 dans le forum Windows
    Réponses: 3
    Dernier message: 12/07/2010, 23h03
  5. Sauvegarder les données dans une session
    Par madjidri dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 08/04/2009, 17h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo