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

Collection et Stream Java Discussion :

Créer et Ecrire dans un fichier.txt à partir d'une ArrayList


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut Créer et Ecrire dans un fichier.txt à partir d'une ArrayList
    Bonjour tout le monde,

    S'il vous plaît, j'ai besoin de votre aide.
    Je suis entrain d'implémenter une méthode qui sert à créer un ficher à partir d'une liste voila la déclaration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<String> nGramsNDT = new ArrayList<String>();
    Puis, voila une portion du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      for (String str : nGramsNDT) {
                    System.out.println(str);
                    BufferedWriter fichNDT = new BufferedWriter(new FileWriter(new File("mon_chemin/NDT.txt")));
                    fichNDT.write(str);
                    fichNDT.write("\n");
                    fichNDT.close();
    Dans ce cas, le ficher NDT est bien créé mais il contient qu'une seule chaine de la listArray , celle la dernière.

    Merci de m'aider

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Voici ce que fais ta boucle :

    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    pour toutes les lignes à écrire
       créer un fichier
           écrire la ligne
       fermer fichier
    fin pour

    Alors qu'il faudrait faire :
    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    créer un fichier
       pour toutes les lignes à écrire
           écrire la ligne
       fin pour
    fermer fichier
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut
    Merci
    Oui , vous avez raison

    voila j'ai corrigé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     BufferedWriter fichNDT = new BufferedWriter(new FileWriter(new File("mon_chemin/NDT.txt")));
                for (String str : nGramsNDT) {
                    fichNDT.write(str);
                    fichNDT.write("\n");
                }
                    fichNDT.close();
    Mais, je pense que n'est pas pris en considération puisque tous les éléments de ArrayList qui sont écrits dans le fichier (NDT.txt) sont mis sur la même ligne

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut
    En fait , j'ai remplacé par , et ça marche

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Sur Windows, le passage à la ligne c'est \r\n. Il est bien mieux en effet d'utiliser newLine(), comme ça, ton fichier est adapté à l'OS sans que tu aies à t'en soucier. Si d'aventure, il te fallait pouvoir le faire sans avoir accès à un telle méthode, tu as System.lineSeparator() qui te rendra un service simulaire (avec un séparateur de ligne sans que tu aies à gérer toi même quels caractères utiliser).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut Ecrire dans un fichier à l'aide d'une fonction
    Rebonjour ,

    Maintenant je voudrais savoir si c'est possible d'écrire dans un fichier à partir des résultats générés par une fonction impléméntée.
    Voila j'ai cette méthode qui sert à calculer le nombre d'occurence d'éléments dans une Lliste (ArrayList).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    static void occurence(ArrayList<String> list) {
            Set<String> unique = new HashSet<String>(list);
            for (String key : unique) {
                System.out.println(key + ": " + Collections.frequency(list, key));
     
            }
    Je voudrais passer au lieu d'affichier le resultat de ce void au niveau de la fêntre de sortie du NetBeans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(key + ": " + Collections.frequency(list, key));
    à l'écrire dans un fichier déja créé comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     BufferedWriter fichNDT = new BufferedWriter(new FileWriter(new File("monChemin/NDT.txt")));
                for (String str : nGramsNDT) {
                    fichNDT.write("Est-il possible d'appeler la fonction occurence ?? ");
                    fichNDT.newLine();
                }
                fichNDT.close();
    Merci

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Pour écrire quelque chose dans un fichier, il faut avoir quelque chose à écrire : il faut donc que ta méthode occurence retourne ce quelque chose (une String). Il suffit donc que tu modifies ta méthode occurence pour qu'elle génère la string et la retourne au lieu d'écrire cette chaîne dans System.out. Tu peux utiliser un StringBuilder pour créer ta chaîne. Ou utiliser un StringWriter et PrintWriter, ce qui te permettra de n'avoir qu'a remplacer des System.out sans rien changer d'autre (ça a les mêmes méthodes).

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String stringWriter = new StringWriter();
    PrintWriter out = new PrintWriter(stringWriter);
     
    // là au lieu System.out.println(machin), tu fais out.println(machin)
     
     
    return stringWriter.toString();
    Tu peux également faire une méthode occurence qui prend le BufferedWriter en paramètre et qui écrit dedans, au lieu d'écrire dans System.out.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut
    Merci , j'ai suivi ce que vous m'avez proposé comme solution et mon problème est bien résolu

    La fonction occurrence devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     static String occurence(ArrayList<String> list) {
            StringWriter writer = new StringWriter();
            PrintWriter out = new PrintWriter(writer);
            Set<String> unique = new HashSet<String>(list);
            for (String key : unique) {
                out.println(key + ": " + Collections.frequency(list, key));
            }
            return writer.toString();
        }

    Pour écrire dans mon fichier le resultat retourné par cette fonction voila :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichNDT.write(occurence(nGramsNDT));
    Merci beaucoup

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

Discussions similaires

  1. Créer et écrire dans un fichier.txt
    Par Furius dans le forum VBScript
    Réponses: 11
    Dernier message: 16/05/2016, 12h27
  2. [WD18] Ecrire dans un fichier txt à partir d'une requête SQL
    Par Blooster dans le forum WinDev
    Réponses: 4
    Dernier message: 29/05/2013, 11h03
  3. Réponses: 8
    Dernier message: 07/09/2006, 11h43
  4. Ecrire dans un fichier a partir du bash
    Par jamesleouf dans le forum Linux
    Réponses: 1
    Dernier message: 20/03/2006, 16h00
  5. Ecrire dans un fichier txt sans en effacer le contenu
    Par cari dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/12/2005, 18h11

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