lire des données à partir d’un FileInputStream on utilise la méthode read qui
renvoie un octet, pour écrire un octet on utilise la méthode write de la classe
FileOutputStream.
1.1.3 Les flux “enveloppants”
Souvent, les données à lire ou à écrire sont stockées sous un format plus
complexe que les octets, ce peut être des caractères, des chaînes de caractères,
des nombres... Java propose des classes qui convertissent des données complexes
(chaînes de caractères, chiffres...) pour les envoyer dans un flux élémentaire.
Pour stocker les types élémentaires (entiers, flottants, booléen,...) les méthodes
DataInputStream et DataOutputStream proposent des méthodes de conversion.
Les deux classes les plus utilisées sont InputStreamReader et OutputStreamWriter.
InputStreamReader convertit les octets du flux entrant en caractères1accessibles
via les méthodes read. Réciproquement, OutputStreamWriter permet de convertir
des caractères en octets à destination d’un flux sortant.
Pour manipuler des objets de type String, Java propose deux classes de conver-
sion : BufferedReader qui convertit les données entrantes d’un InputStreamReader
en String et BufferedWriter qui convertit les objets String pour les envoyer
dans un OutputStreamWriter. Les codes sources 1 et 2 présentent l’utilisation de
ces classes pour manipuler des fichiers textes.
Code source 1 Lecture de chaînes de caractères
File fichier = new File("Document.txt");
FileInputStream fi = new FileInputStream(fichier);
InputStreamReader isr = new InputStreamReader(fi);
BufferedReader br = new BufferedReader(isr);
String chaineLue = br.readLine();
System.out.println(chaineLue);
br.close();
isr.close();
fi.close();
L’écriture de chaînes de caractères peut encore être simplifiée en utilisant la
classe PrintWriter. Le constructeur admet soit un File, un nom de fichier ou un
OutputStream. On dispose ensuite de méthodes comme print et println pour
écrire des chaînes de caractères.
1.2 Le réseau TCP en Java
La gestion des communications réseaux en Java est assurée par des flux. Une
fois la connexion établie, l’envoie et la réception de données utilisent les mêmes
1La conversion n’est pas aussi triviale qu’elle n’y parait. Selon, l’encodage choisi, un caractère peut
prendre plusieurs octets.
2