
{filelink=4415}
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 {
final String filename;
public FichierTexte(String filename) {
this.filename = filename;
}
// Impl�mentation d'une m�thode de l'interface Itrerable
public Iterator iterator() {
return new IterateurFichierTexte();
}
// Implementation d'une classe it�rateur personnalis�
class IterateurFichierTexte implements Iterator {
// 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);
}
}