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

Entrée/Sortie Java Discussion :

Stocker le résultat dans des fichiers


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Par défaut Stocker le résultat dans des fichiers
    Salut;
    j'ai crée ce code qui permet de lire les lignes d'une fichier, et prendre chaque ligne de cette fichier et la mettre dans un fichier à part, mais le problème c'est que tous les fichiers que je reçois ne contient que la dernière ligne.
    pouvez vous me corriger le programme SVP.
    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
    public static void main(String args[]) throws IOException {
     
            FileInputStream fstream = new FileInputStream("/home/Bureau/CaptureEcrant/Message.txt");
     
            // Get the object of DataInputStream
            DataInputStream in = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String strLine;
            while ((strLine = br.readLine()) != null) {
                Writer output = null;
                for (int i = 0; i < 400; i++) {
                    File fil = new File("/home/Bureau/CaptureEcrant/message/file" + i + ".txt");
                    output = new BufferedWriter(new FileWriter(fil));
                    output.write(strLine);
                    output.close();
                }
            }
            //    System.out.println(strLine);
        }
    merci

  2. #2
    Membre expérimenté Avatar de akrom
    Homme Profil pro
    Automaticien
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Par défaut
    A chaque itération de ton while tu réécrit entièrement le fichier
    Pour ajouter une ligne à la fin du fichier voir la faq

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Par défaut
    Merci
    j’espère que vous avez bien compris ce que je voulais dire ?, est ce que vous avez bien lu mon message?, le problème c'est que tous les fichiers que je reçois ne contient que la dernier ligne du fichier "Message.txt".

  4. #4
    Membre émérite

    Homme Profil pro
    Ingénieur R&D en informatique
    Inscrit en
    Août 2011
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur R&D en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 313
    Par défaut
    bonjour,

    Selon moi, ton problème est dû au fait qu'à chaque itération du while, tu recrées 400 fichiers (file1, file2, ..., file400) et tu écris la ligne courante du fichier Message.txt. A la prochaine itération du while, tu ré-ouvres ces mêmes fichiers en écriture et tu écris la ligne courante du fichier Message.txt. Ce qui a le malheur de détruire tout ce que contenait le fichier et de recommencer à zéro une nouvelle écriture. D'où il est normale qu'à la fin de ton itération while, tu ne vois que la dernière ligne du fichier Message.txt qui soit écris dans tes fichiers.

    Je ne sais pas si je me fais bien comprendre!!!

    A mon avis, tu devrais ouvrir tes 400 fichiers (file1, file2, ..., file400) une seule fois et puis parcourir chaque ligne du fichier Message.txt pour écrire dans chacun de ces fichiers.

    La solution est donc d'inverser ta boucle while avec celle du for :

    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
     
    public static void main(String args[]) throws IOException {
     
            FileInputStream fstream = new FileInputStream("/home/Bureau/CaptureEcrant/Message.txt");
     
            // Get the object of DataInputStream
            DataInputStream in = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String strLine;
             for (int i = 0; i < 400; i++) {
                    File fil = new File("/home/Bureau/CaptureEcrant/message/file" + i + ".txt");
                  Writer output = null;
                  output = new BufferedWriter(new FileWriter(fil));
                  while ((strLine = br.readLine()) != null) { 
                    output.write(strLine);
                    // System.out.println(strLine);
                  }
                   output.close();
                   //on réinitialise le pointeur de ligne du fichier Message.txt qui est actuellement en fin de ligne, en debut, pour pouvoir refaire le même travail sur le fichier file i+1.
                  BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
     
             }
        }
    En espérant t'avoir aidé,

    Cordialement.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Par défaut
    merci pour votre aide;
    concernant la dernière ligne de réinitialisation il ne l’accepte pas, puisque il existe déjà, je ne sais pas est ce que je dois ajouter qqchose, pour le résultat, en effet, la première fichier (file0.txt) contient tous le résultat, et les autre (400 file) sont vide, avez vous une idée.
    merci

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    Tu n'as pas besoin de la boucle for. Il te suffit de créer une boucle while parcourant ton fichier texte ligne par ligne. Et pour chaque ligne récupérés tu créés un nouveau fichier.

    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
    public static void main(String args[]) throws IOException {
     
            FileInputStream fstream = new FileInputStream("/home/Bureau/CaptureEcrant/Message.txt");
     
            // Get the object of DataInputStream
            DataInputStream in = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String strLine;
            int i =0;
            Writer output = null;
            while ((strLine = br.readLine()) != null) {
                File fil = new File("/home/Bureau/CaptureEcrant/message/file" + i + ".txt");
                output = new BufferedWriter(new FileWriter(fil));
                output.write(strLine);
                output.close();
                i++;
            }
            //    System.out.println(strLine);
        }

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

Discussions similaires

  1. POO, stocker le résultat dans des variables
    Par nicolas2603 dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2012, 11h40
  2. stocker les résultats dans des vecteurs
    Par ebenmous dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 26/06/2011, 17h35
  3. Stocker les résultats dans des ensembles
    Par ebenmous dans le forum Général Java
    Réponses: 2
    Dernier message: 05/06/2011, 12h06
  4. erreur lors de l'affichage des résultat dans des fichier
    Par bouabid_hanen dans le forum Fortran
    Réponses: 3
    Dernier message: 19/11/2010, 09h34
  5. Stocker des résultats dans un fichier
    Par usthb23 dans le forum MATLAB
    Réponses: 9
    Dernier message: 28/12/2009, 14h25

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