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 Discussion :

Problème lors de création de fichier


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Rappunzell
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2007
    Messages : 93
    Par défaut Problème lors de création de fichier
    Bonjour,

    Alors mon problème est assez simple. Je log dans mon appli diverse choses. J'apelle donc régulièrement la méthode suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    String date = new String(new Date().toLocaleString());
     
    			try {
    				FileOutputStream fos = openFileOutput("log_buffer.txt", Context.MODE_APPEND);
     
    				fos.write(new String(date + " : " + s + "\n").getBytes());
     
    				fos.close();
     
    			} catch (IOException e) {
    				Toast toast = Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG);	
    				toast.show();
    			}
    Ça marche sans aucun problème sur mon HTC Wildfire S A510e Android 2.3.3.
    Le fichier est bien créé, et les données sont bien ajouter à la fin du fichier chaque fois que j’appelle la méthode.

    Par contre, sur un Archos5 Android 1.6. Le fichier n'est apparemment pas créé. Quelque pourrait-il me dire pourquoi ?

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Ajoute Log.e("MON APP", "CREATION FiCHIER", e); dans le catch, et donne nous l'exception sans doute générée et mise dans le LogCat.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre éprouvé Avatar de linked
    Profil pro
    Développeur Android
    Inscrit en
    Mai 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Android

    Informations forums :
    Inscription : Mai 2008
    Messages : 88
    Par défaut
    Peut être un oubli de la permission d'écrire dans le manifest ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Si c'était un problème de permissions, cela ne marcherai pas non plus sur le wildfire....

    Au fait, c'est quoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String date = new String(new Date().toLocaleString());
    ...
    new String(date + " : " + s + "\n").getBytes()
    ?????

    La premiere ligne va faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    new Date()   (java.util.Date)
    toLocaleString() (java.lang.String)
    toString() ???
    new String()
    String date = new Date().toLocaleString(); suffit donc amplement...

    Pareil pour l'autre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    new StringBuilder();
    append(date)
    append(" + ")
    append(s)
    append("\n")
    toString()
    new String()
    Un simple (date + " : " + s + "\n").getBytes(); suffit

    toLocaleString() => deprecated (interdit, Eclipse devrait souligner un rouge)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        /**
         * @return the string representation of this {@code Date} for the default {@code Locale}.
         *
         * @deprecated use {@link DateFormat}
         */
    Il faut donc utiliser un DateFormat....ou plus intelligemment, les fonctions utilitaires prévues par Android:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DateUtils.formatDateTime(context, millis, flags);
    Ensuite pour écrire un fichier texte, ça ne marche pas du tout comme cela... La tu écris un fichier binaire... Voici ce que tu devrais faire:
    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
     
    FileOutputStream fos = null;
    PrintWriter pw = null;
    try {
        fos = openFileOutput("log_buffer.txt", Context.MODE_APPEND);
        pw = new PrintWriter (fos); // <= ici on peut gérer le charset utilisé ! mais par défaut ce sera un charset acceptant les caractères "locaux".
     
        pw.print(date);
        pw.print(" : ");
        pw.println(s);
    } catch (IOException ex) {
        Log.e("MONAPP","Erreur d'écriture !",ex);
    } finally {
        // On n'oublie pas de fermer les ressources MEME en cas d'exception !
        if (pw != null) pw.close(); // va aussi fermer le file-output-stream !
        else if (fos != null) fos.close();
    }

  5. #5
    Membre éprouvé Avatar de linked
    Profil pro
    Développeur Android
    Inscrit en
    Mai 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Android

    Informations forums :
    Inscription : Mai 2008
    Messages : 88
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Si c'était un problème de permissions, cela ne marcherai pas non plus sur le wildfire....
    Justement non, cela dépend des versions d'android. Sur certaines versions on peut "oublier" la permission "WRITE" mais pas sur d'autres.

  6. #6
    Membre confirmé Avatar de Rappunzell
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2007
    Messages : 93
    Par défaut
    Bonjour !

    Désolé pour cette réponse un peu tardive...

    D'abord, merci nicroman pour ces précisions. Effectivement, tes remarques sont fondées, j'ai donc corrigé mon code. Je ne savais même pas que toLocaleString() était deprecated, ce n'était mentionné nul part

    Sinon, pour le problème général, je l'ai réglé. En fait le fichier était bien créé, mais je n'arrivait pas à l'ouvrir car je n'avais pas encore trouvé de moyen générique pour obtenir le chemin d'accès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Uri.parse("file://"+getFilesDir()+"/"+FILENAME_LOG)
    où FILENAME_LOG est un String contenant le nom du fichier 'log.txt'. Avant, je saisissais le chemin en dur !

Discussions similaires

  1. [JDOM] Problème avec les accents français lors de création de fichier Xml
    Par jean1979 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 05/01/2012, 10h08
  2. [SQL Server 2005]problème lors du création d'un nouvel utilisateur
    Par etoile_de_vie dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/08/2007, 16h05
  3. [DOM] problème lors du parcours du fichier xml
    Par krfa1 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/05/2007, 07h24
  4. [10G] Problème lors de création de tables et champs
    Par keiserjo dans le forum Oracle
    Réponses: 7
    Dernier message: 28/09/2006, 12h14
  5. problème lors de création d'une vue
    Par gapse dans le forum Oracle
    Réponses: 7
    Dernier message: 26/07/2006, 12h59

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