Pour écrire des choses à l'écran, deux possibilités :
Pour demander à l'utilisateur de rentrer des données au
clavier dans un programme, il faut partir de l'objet de base System.in.
À partir de cet objet, on crée un premier objet de type InputStreamReader,
objet qui ne permet que de lire des caractères un par un :
InputStreamReader ist = new InputStreamReader(System.in) ;
À partir de ce nouvel objet, on en crée un autre de type
BufferedReader qui permet de lire des lignes entières de texte :
BufferedReader br = new BufferedReader(ist) ;
String ligne = br.readLine() ;
On peut alors récupérer séparement les mots qui
compose cette lignes (qui sont séparés par des espaces ou
des tabulations), en créant un objet de type StringTokenizer :
StringTokenizer st = new StringTokenizer(ligne) ;
La fonction st.hasMoreTokens() renvoie un booléen et permet de savoir
s'ils y a encore des mots non lus sur la ligne, et la fonction st.nextToken()
renvoie un objet de type String qui est le prochain mot non encore lu.
Si l'on veut transformer un mot en un entier ou un réel, il faut faire des conversions de type.
Quelques exemples a copier tels quels ou à modifier :
On peut bien sûr combiner ces techniques :
Les opérations d'entrées peuvent provoquer des erreurs.
Il faut indiquer à Java que faire dans ce cas. Cela se fait en englobant
les opérations d'entrées par try { au début, et à
la fin :
}catch(java.io.IOException e) {
System.out.println("Erreur de lecture") ;
System.exit(0) ;
}
À la place du message d'erreur, on peut mettre un comportement par
défaut (la variable iqui aurait sue être lue peut être
mise à zéro) :
try {
.........
} catch(java.io.IOException e) {
i = 0 ;
}
Les entrées depuis un fichier sont très semblables aux
entrées depuis le clavier. Seule différence, on ne part pas
de System.in, mais du nom du fichier, à partir duquel on va créer
un objet FileReader (à la place de InputStreamReader).
On va alors comme pour le clavier créer un objet BufferedReader
et la suite ne change pas :
String nom_fichier = "mon_fichier_dans_lequel_je_veux_lire_des_données"
;
FileReader fichier = new FileReader(nom_fichier) ;
BufferedReader br = new BufferedReader(fichier) ;
.....
Pour écrire dans un fichier, il faut ouvrir un fichier en écriture en créant un objet de type FileWriter, on peut alors écrire des objets de type String dedans (les entiers et réels doivent être convertis en String d'abord), et on ferme le fichier ensuite. Le tout doit être entouré de try et catch pour récupérer les erreurs d'écriture. Par exemple, pour écrire les deux lignes toto et titi dans un fichier :
try {
FileWriter fichier = new FIleWriter("mon_fichier_ou_je_veux_ecrire")
;
fichier.write("toto\n") ;
fichier.write("titi\n") ;
fichier.close() ;
} catch (java.io.IOException e) {
System.out.println("Erreur d'ecriture") ;
System.exit(1) ;
}