Lire dans un fichier texte
Lire dans un fichier texte
Premier méthode : utiliser un BufferdReader
Il s'agit ici de lire un fichier de type texte ligne par ligne et de reproduire ce qui est lu directement à l'écran. On compose paour cela un BufferdReader avec un FileReader.
Cet exemple est particulièrement simple.
import java.io.BufferedReader;
java.io.FileReader;
java.io.FileNotFoundException;
java.io.IOException;
class LireLigne
{
public static void main(String[] argv) throws IOException
{
BufferedReader lecteurAvecBuffer = null;
String ligne;
try
{
lecteurAvecBuffer = new BufferedReader(new FileReader(argv[0]));
}
catch(FileNotFoundException exc)
{
System.out.println("Erreur d'ouverture");
}
while ((ligne = lecteurAvecBuffer.readLine()) != null)
System.out.println(ligne);
lecteurAvecBuffer.close();
}
}
A l'exécution, on obtient en sortie, à l'écran, exactement le contenu du fichier dont le nom est indiqué sur la ligne de commande.
Vous pouvez récupérer ce programme
Deuxième méthode : utiliser un Scanner
Cet exemple permet d'illustrer le fait que la classe Scanner permet une lecture quelquefois plus aisée des fichiers. Dans notre exemple, il s'agit d'additionner des entiers contenus dans un fichier. On donne encore deux possibilités (dont une en commentaires), selon qu'on souhaite localiser le fichier par rapport au répertoire d'exécution ou par rapport au bytecode d'une certaine classe.
class LireFichierTexte {
public static void main(String[] arg) throws java.io.IOException {
java.util.Scanner lecteur ;
java.io.File fichier = new java.io.File(arg[0]);
lecteur = new java.util.Scanner(fichier);
/* ou bien
java.io.InputStream entree =
LireFichierTexteBis.class.getResourceAsStream((arg[0]));
lecteur = new java.util.Scanner(entree);
*/
int somme = 0;
while (lecteur.hasNextInt()) somme += lecteur.nextInt();
System.out.println(somme);
}
}
Vous pouvez récupérer ce programme
lecteur.hasNextInt() : cette instruction renvoie true ou false selon que la prochaine entrée à lire a ou non un format correspondant à un entier.
}
© Irène Charon, Télécom ParisTech 2011