Lectures successives fichier texte

Sheogora Messages postés 2 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 12 novembre 2006 - 9 nov. 2006 à 21:41
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 - 13 nov. 2006 à 13:09
Salut


petite question sur la lecture de fichiers texte...


comment faire pour lire successivement le meme fichier dans un programme JAVA ???


Mon code me permet de lire une premiere fois mon fichier texte, mais à la seconde lecture, ça plante... le char lu est -1 :(







import java.io.*;



public class LireLigneEcrireColonne {
 public static void main(String[] args) {
  Traitement trait = new Traitement(args[0]);
  trait.convert();
 }
}


Merci
class Traitement {
 String fichierSource;
 int nbr_sequ; // nombre de séquences
 int nbr_elmt; // nombre d'éléments dans chaque séquence
 
 Traitement (String sourceArgs) {
  fichierSource = sourceArgs;
 }



 void convert() {
  try {
   /* créer des objets file */
   File source = new File(fichierSource);
   
   /*  créer le flux d'entrée */
   FileReader fr = new FileReader(source);
   BufferedReader in = new BufferedReader(fr);
   
   
   boolean eof = false;
   int inChar = 0;
   int nbr_sequ = 0;
   int nbr_elmt = 0;
   
   /* Recherche du nombre de séquences */
   System.out.println("Recherche du nombre de sequences...");
   do {
    inChar = in.read();
    if (inChar != -1) {
     if (inChar == '[') {
      nbr_sequ = nbr_sequ + 1;
     }
    }
    else
     eof = true;
   } while (!eof);
   System.out.println("---->  "+nbr_sequ+" sequences trouvees");



  
  /* Recherche du nombre d'éléments dans chaque séquence */
   System.out.println("\n\nRecherche du nombre d'elements");
   do {
    inChar = in.read();
    System.out.println(inChar);
    if (inChar != -1) {
     if (inChar == ';') {
      nbr_elmt = nbr_elmt + 1;
     }
    }
    else
     System.out.println("\n******\nfin du document\n*****");
     in.close();
     eof = true;
   } while (inChar != ']');
   System.out.println(nbr_elmt +"sequences trouvees");
    
   in.close();    // fermeture fichier horizontal
   
  } catch (IOException e) {
   System.out.println("Error !!!"+e);
  }
 } // FIN DE void convert
} // FIND DE class Traitement

3 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
9 nov. 2006 à 23:29
Salut:

Pour relire ton fichier plusieurs fois il faut :

1. soit fermer l'objet BufferedReader avec la méthode close () avant de le lire de nouveau (ceci est pour
réinitialiser le pointeur interne associé au fichier
).

2. soit tu laisses ton objet BufferedReader ouvert mais pour le lire dès le début, tu dois réinitialiser le pointeur interne associé au fichier avec la méthode seek () de la classe java.io.RandomAccessFile pour se positionner au début du fichier.
0
Sheogora Messages postés 2 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 12 novembre 2006
12 nov. 2006 à 21:48
ok pour la fonction close()...
mais une fois fermée, comment fais -tu pour recommencer la lecture ?
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
13 nov. 2006 à 13:09
Elemantaire mon cher sheogora, tu le rouvres XD (ou alors tu utilises le seek pour revenir au début du fichier)

Voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
0
Rejoignez-nous