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); } }