Utiliser la boucle ‘forin’ pour lire un fichier text ligne par ligne

Author:


Download

import java.util.Iterator;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
 
/**
 * Cette classe vous permet de parcourir une fichier texte ligne par ligne.
 *
 */
public class FichierTexte implements Iterable<String> {
 
  final String filename;
 
  public FichierTexte(String filename) {
    this.filename = filename;
  }
 
  // Impl�mentation d'une m�thode de l'interface Itrerable
  public Iterator<String> iterator() {
    return new IterateurFichierTexte();
  }
 
  // Implementation d'une classe it�rateur personnalis�
  class IterateurFichierTexte implements Iterator<String> {
 
    // D�claration d'un objet 'BufferedReader' pour lire les flux d'entr�e
    BufferedReader in;
 
    String ligneSuivante; // Affecter la valuer de la  derni�re ligne lu
 
    public IterateurFichierTexte() {
      // Ouvrir le fichier et lire les donn�es;
         try {
        in = new BufferedReader(new FileReader(filename));
        ligneSuivante = in.readLine();
      } catch(IOException e) {
        throw new IllegalArgumentException(e);
      }
    }
 
    // V�rifier si la ligne suivante n'est pas null, sinon arr�te le parcour du fichier
    public boolean hasNext() {
      return ligneSuivante != null;
    }
 
    public String next() {
      try {
        String result = ligneSuivante;
 
        // Tester si nous n'avons pas atteind la fin de fichier
        if (ligneSuivante != null) {
          ligneSuivante = in.readLine(); // Si c'est le cas, alors lis la ligne suivante
          if (ligneSuivante == null)
            in.close();             // Fermer le flux d'entr�e si la fin de fichier est atteint
        }
 
        // Retourner la derni�re ligne lue par notre flux
        return result;
      } catch(IOException e) {
        throw new IllegalArgumentException(e);
      }
    }
 
    // Le fichier est en lecture seule, �viter toute op�rations d'�criture
    public void remove() {
      throw new UnsupportedOperationException();
    }
  }
 
  public static void main(String[] args) {
    String filename = "FichierTexte.java";
    if (args.length > 0)
      filename = args[0];
 
    for(String line : new FichierTexte(filename))
      System.out.println(line);
  }
}