L'objet System.in est le
flot d'entrée standard. Il est
ouvert en permanence et dirigé par défaut depuis le clavier.
Sa méthode
int read(byte[] buffer); lit des octets
(type byte) et essaye de remplir le tableau
buffer. La méthode renvoie le nombre
de valeurs effectivement lues, un entier.
Comme pour les flots de sortie, il existe une classe enveloppante
java.io.BufferedReader qui permet de lire
ligne par ligne. Cependant la classe java.util.Scanner
est plus souple d'utilisation.
try {
Scanner sc = new Scanner(System.in);
// ou Scanner sc = new Scanner(new FileReader("fic.txt"));
String lu = sc.nextLine();
// ou int v = sc.nextInt(); // si on veut lire un entier
} catch(Exception e) {
System.err.println("Erreur de lecture : "+e);
}
Le programme ci-dessus ne fait rien d'intéressant, il illustre simplement
l'utilisation de la classe Scanner pour lire
sur l'entrée standard.
La classe Scanner offre des méthodes
pour lire des valeurs correspondants à chaque type primitif :
nextInt, nextBoolean,
nextFloat, etc.
Elle offre aussi des méthodes pour savoir si une donnée de tel
ou tel type est disponible en lecture : hasNextLine()
pour savoir si le flot est terminé ou non, hasNextInt()
pour savoir si la donnée suivante est un entier, etc.
La classe java.io.FileReader permet d'ouvrir un
flot d'entrée (lecture) de caractères vers un fichier.