Revenir au début du file avec un FileReader

daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012 - 13 août 2007 à 10:13
daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012 - 13 août 2007 à 13:34
Bonjour tout le monde,

Je rencontre un problème que je ne peux pas résoudre.

Je somme les nombres d'un fichier txt, la première fois ça fonctionne très bien, j'ai le bon résultat.

Par contre, quand je refait la somme, ça ne fonctionne plus, j'obtiens 0.

Voici mon code et certaines explications :

int i=0;
       
        while((ligne=br.readLine())!=null)
        {
            i++;
            nombreTransformes = Integer.parseInt(ligne);
            total+=nombreTransformes;        
           
        }
       
        System.out.println("i vaut " +i);

Donc la première fois, ça fonctionne bien, i vaut le nombre de chiffre se trouvant dans le fichier (par exemple 11) et le total est correcte, par contre, quand je repasse une seconde fois, i vaut 0 (donc aucun passage dans le while) et la somme vaut 0.

Je me demande si le FileReader ne devrait pas revenir au début du file, comment faire cela ?

Merci d'avance pour votre aide.

DD

4 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
13 août 2007 à 10:49
ici cela n apparait pas  mais à l évidence ,o)  tu ne réinitialises pas ton flux de lecture ....
ce qui fait que sur le second passage tu pontes deja la fin de ton fichier ;o) et donc tu fais la somme de ZERO element ;o) ....
ferme tes fulx apres chaque boucle et réouvre les avant ...

GL

GodConan ;o)
0
daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012
13 août 2007 à 11:00
Bonjour GodConan,

Merci pour tes réponses.

tu dis :

ferme tes fulx apres chaque boucle et réouvre les avant ...

Pour fermer, j'utilise .close() mais comment faire pour ouvrir ?

Autre chose :

J'essaie d'ouvrir un File en append (donc ajout à la fin du document) avec ce code :

import java.io.*;
public class test
{
 public static void main (String [] args) throws IOException
 {
  String chemin ="c:/somme.txt";
  File f = new File(chemin,true);
 }
}

Mais j'obtiens en permanence ce message d'erreur :

"Cannot resolve symbol constructor File (java.lang.String.boolean)

Qu'en penses-tu ?

Je te remercie encore pour tout
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
13 août 2007 à 11:25
;o) il semble qu il ne connaisse pas ce contructeur ;o) ...
de plus quand tu veux lire un fichier , tu ne l ouvre pas en append... ;o)

apres un close, il te faut tout simplement refaire un new .... si tu organises bien tes methodes et class cela coule tres bien...

GodConan ;o)
0
daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012
13 août 2007 à 13:34
Salut Conan,

Tes pistes m'ont énormément aidé !

Merci !

Le problème est que je passais en paramètre les bufferedWriter, FileReader et autres, à ne surtout pas faire !

Il vaut miex créer dans chaque méthodes un nouveau FileReader.... autrement ça pose des problèmes.

Merci pour tout.
0
Rejoignez-nous