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 :

Création et édition d'un fichier texte


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Par défaut Création et édition d'un fichier texte
    Bonjour à tous,

    J'ai une application bien spécifique à faire mais je vais simplifier le problème pour que vous m'aidiez à trouver la solution.

    Je souhaite généré un fichier texte contenant :
    "1
    2
    3
    ... (jusqu'à) 20"

    Voici le code que j'ai trouvé et que je propose d'utiliser :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
     
     
    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.util.Log;
     
    public class Main extends Activity{
     
     
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            // Recupere le dossier de stockage de l'application
            File ls = this.getFilesDir();
            Log.i("","Local Storage : "+ls.getAbsolutePath());
     
            // Crée un dossier
            File cd = this.getDir("demo", Context.MODE_WORLD_READABLE|Context.MODE_WORLD_WRITEABLE);
     
    		File fl = new File(cd.getAbsolutePath()+"/demo2.txt");
    		Log.i("",fl.getAbsolutePath());
     
    		// Ecrit un fichier avec chemin
    		try {
    			for (int i=1;i<=20;i++){
    			FileOutputStream fos = new FileOutputStream(fl);
    			DataOutputStream dos = new DataOutputStream(fos);
    			String text;
    			text=""+i;
    			dos.write(text.getBytes());
    			fos.close();
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
        }
     
    }
    le problème c'est que le fichier texte généré est le suivant :
    "20"
    C'est à dire, que les données sont écrasé à chaque itération de ma boucle For.

    Ma question : comment faire pour écrire le texte l'un à la suite de l'autre comme prévu ?

    je continue à regarder si je trouve je poste la solution bien sûr ^^.

  2. #2
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 246
    Par défaut
    Bonjour, déjà il faut que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FileOutputStream fos = new FileOutputStream(fl);
    DataOutputStream dos = new DataOutputStream(fos);
    String text;
    fos.close();
    Ne soit pas déclarer à l'intérieur du for.
    Ça peut poser problème.

    Peut être qu'il faut écrire \n.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    FileOutputStream fos = new FileOutputStream(fl);
    DataOutputStream dos = new DataOutputStream(fos);
    String text;
    for (int i=1;i<=20;i++){
         text=""+i;
         dos.write(text.getBytes());   
    }
    fos.close();
    Ça devrait plus le faire déjà.
    Ou peut être : dos.write(text.getBytes()+"\n");
    Mais je ne suis pas sûre que ce soit nécessaire.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Par défaut
    Merci de ta réponse rapide (comme d'habitude).

    Ou peut être : dos.write(text.getBytes()+"\n");
    ce code génère un message d'erreur.

    du coup à la place j'assayé ; text=""+i+"\n" mais ça ne donne pas le résultat voulu.

  4. #4
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 246
    Par défaut
    Non mais rien que ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    FileOutputStream fos = new FileOutputStream(fl);
    DataOutputStream dos = new DataOutputStream(fos);
    String text;
    for (int i=1;i<=20;i++){
         text=""+i;
         dos.write(text.getBytes());   
    }
    fos.close();
    Ça ne t'écrit pas plusieurs lignes ?
    Je suis aller voir des exemples de boucle for avec des DataOutputStream et il ni a pas de \n.

    Ou alors essai : dos.writeBytes(text+"\n");
    Ou bien dos.writeBytes(new String(text+"\n"));

    Je ne sais pas dans les forums ils conseillent d'utiliser PrintWriter.

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Si c'est pour écrire du texte pourquoi faire text.getBytes() ?
    Il vaut mieux utiliser un Writer qui gère correctement les flux de caractères.

    Ensuite il vaut mieux fermer le flux surlequel on écrit car il peut être bufferisé. Donc dos.close() plutôt que fos.close().
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Par défaut
    Merci thierrybenji, mais j'ai proposé une boucle for ici car dans mon application finale, je serai amené à faire des modifications régulière sur le fichier texte. C'est pour cette raison que je veux écrire les valeur du String text les uns à la suite des autres.

    Nemek, j'ai essayer writer (je ne suis pas un spécialiste de java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    			FileOutputStream fos = new FileOutputStream(fl);
    			DataOutputStream dos = new DataOutputStream(fos);
    			for (int i=1;i<=20;i++){
     
    			String text;
    			text=""+i+"\n";
    			//dos.write(text.getBytes());
    			//fos.close();
    			Writer tes=null;
    			tes.append(text, 0, 5);
    			dos.close();

    le fichier .txt généré donne : rien ... lol. Le problème doit venir de ma définition de mon Writer je suppose

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 19/12/2011, 17h32
  2. Création requete insert dans un fichier texte
    Par harry le ravi dans le forum Débuter
    Réponses: 4
    Dernier message: 03/07/2009, 12h08
  3. [VBA] Création d'un format d'import de fichier texte
    Par Julien Dufour dans le forum Access
    Réponses: 6
    Dernier message: 12/05/2006, 17h37
  4. Création d'un fichier texte
    Par licorne dans le forum Langage
    Réponses: 9
    Dernier message: 25/10/2005, 17h05
  5. [AC97] création d'un fichier texte
    Par pokemoon94 dans le forum VBA Access
    Réponses: 5
    Dernier message: 05/10/2004, 14h45

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