Sorties par défaut
Nous avons déjà utilise des fonctions d'entrées/sortie.
Par exemple : System.out.println("mon
message") est une méthode de la classe d'e/s PrintStream
qui
écrit sur la sortie par défaut. On y trouve les méthodes
générales suivantes :
-
print(param) qui affiche un texte correspondant
a param
-
println(param) qui affiche un texte
correspondant a param et retourne a la ligne,
-
write(param, , ) qui affiche un texte
correspondant a un block binaire,
-
close() qui ferme le flux de sortie,
-
flush() qui vide le tampon du flux
de sortie,
-
checkError() et setError()
qui gerent les erreurs sur le flux de sortie.
Comme en C, il existe un autre flux standard de sortie qui est plus particulierement
reserve a la gestion des erreurs : System.err.
Ces flux standards peuvent etre reaffectes par la methode System.setOut(PrintStream
nouveau).
Entrees par défaut
De la meme facon, on trouve un flux standard d'entree qui s'appelle
System.in et
sur lequel on peut travailler. Ce flux d'entree appartient a la classe
InputStream
qui
lit des informations sur l'entree par défaut. On y trouve les methodes
generales suivantes :
-
read() qui lit ce qui est tape sur
le flux d'entrees (caractere par caractere)
-

Ce flux standard peut etre reaffecte par la methode setIn(InputStream
nouveau).
Entrees/Sorties sur des fichiers (a acces sequentiel)
Un fichier est un objet de classe File a
partir duquel on peut definir un flux d'entree ou de sortie. L'exemple
suivant lit le fichier ASCII io.0.html caractere par caractere,
affiche le code de chaque caractere lu a l'ecran, puis ecrit ce caractere
dans un nouveau fichier io.0.txt.
import java.io.*;
class entree_sortie
{
} |
NB : pour des raisons de securite, un tel programme ne marche pas
avec les Applets.
Filtrage des e/s de base
La gestion des flux peut etre amelioree en utilisant les classes DataInputStream
et
DataOutputStream
qui filtrent les donnees (la gestion caractere par caractere
est en effet un peu primaire). Pour cela, il suffit juste d'ajouter une
ligne du style :
../..
DataInputStream filtre_in
= new DataInputStream(mon_in) ;
DataOutputStream filtre_out
= new DataOutputStream(mon_out) ;
../..
|
Il est alors possible de faire des lectures et des ecritures formatees
:
-
filtre_out.writeDouble(3.14159)
pour ecrire un double,
-
filtre_out.writeChar('c') pour
ecrire un caractere (y compris '\t', '\n', ...),
-
filtre_out.writeInt(256) pour
ecrire un entier,
-
filtre_out.writeChars(ma_chaine)
pour ecrire une chaine de caracteres,
-
etc
-
mon_double = filtre_in.readDouble()
-
mon_caractere = filtre_in.readChar()
-
mon_entier = filtre_in.readInt()
-
ma_chaine= filtre_in.readLine()
Ph. RIS 1997