source : http://java.sun.com/docs/books/tutorial/essential/io/overview.html 


Trail: Essential Java Classes
Lesson: I/O: Reading and Writing (but no 'rithmetic)

Vue d'ensemble des flux d'entrée/sortie (Overview of I/O Streams)

Pour obtenir une information, un programme ouvre  un flux (stream) sur une source d'information (un fichier, mémoire, un socket) et lit séquentiellemnt l'information, comme montré ici :
De façon similaire, un programme peut envoyer une information vers une destination externe en ouvrant un flux  en direction de la destination et en écrivant séquentiellement l'information :
Il n'est pas important de savoir d'où vient et où va l'information, comme il n'est pas important non plus de connaître le type de l'information : l'algorithme de lecture et d'écriture séquentielle est le même :
 
 
Lecture

Ecriture
ouvir un flux
tant qu'il y a une information
    lire l'information
fin tant que
fermer le flux
 
ouvir un flux
tant qu'il y a une information
    écrire l'information
fin tant que
fermer le flux
Le paquetage java.io(in the API reference documentation)  contient une  collection de classes de flux (stream classes) qui supporte ces algorithmes pour  la lecture et l'écritur. Pour utiliser ces classes,  un programme a besoin d'importer le paquetage java.io(in the API reference documentation) . Les classses de flux sont divisées en deux hiérarchies de classes, basées sur le type de donnée (caractère ou octet) sur lequel elles opèrent.


Les flux de type caractère

Reader(in the API reference documentation) et Writer(in the API reference documentation) sont les super-classes abstraites (abstract superclasses) pour les flux de caractères dans java.io. Reader de l'API et partiellement implementées pour les lecteurs (readers) --flux qui lisent des caractères composés de 16-bit -- et écrivains  (Writer)  -- flux d'écriture de caractères de 16-bit.
Les sous-clases de  Reader et Writer implémentent des flux spéciaux qui sont divisés en deux catégories :
 ceux qui lisent ou écrivent des données comme un simple flux  (en gris dans la figure ci-dessous) et ceux qui réalisent des traitements comme des procédures de tri  par exemple (en blanc dans la figure).
La figure montre la hiérarchie de classes pour les classes Reader et Writer.


La majorité des programmes devrait utiliser les readers et writers pour lire et écrire de l'information textuelle. Ainsi ces programmes peuvent gérer n'importe quel caractère Unicode, même si le flux d'octet est limité à l'ISO-Latin-1 (8-bit).

Flux d'octets (Byte Streams)

Pour lire et écrire des octets (8-bit bytes), les programmes doivent utiliser des flux d'octets (byte streams), descendants de InputStream(in the API reference documentation) et OutputStream(in the API reference documentation). InputStream et OutputStream proviennent de l'API et implémentent partiellement  les flux d'entrée ( input streams - streams that read 8-bit bytes) et flux de sortie (output streams - streams that write 8-bit bytes).
Ces flux  sont typiquement utilisés pour lire (read) et écrire (write) des données binaires (binary data) telles que images et sounds. Deux de ces classe de flux binaires, ObjectInputStream et ObjectOutputStream, sont utilisées pour la sérialisation d'objet.

Au même titre que Reader et Writer, les sous-classes de  InputStream et OutputStream sont spécialisées en deux catégories I/O,  comme présenté dans la figure suivante, qui montre les flux présente qui transforme ou non les données.



Opérations I/O des superclasses

Reader et InputStream définissent des opérations similaire, mais pour des types différents de données (char ou byte).

Par exemple, Reader contient ces methodes pour lire un caractères ou un tableau de caractères :

int read()
int read(char cbuf[])
int read(char cbuf[], int offset, int length)
InputStream a des méthodes similaires, définies sur des octets (bytes) :
int read()
int read(byte cbuf[])
int read(byte cbuf[], int offset, int length)
Ces opérations travaillent relativement à une position dans le flux, qu'elles font progressivement avancer.

Writer et OutputStream proposent la même similitude :

int write(int c)
int write(char cbuf[])
int write(char cbuf[], int offset, int length)
int write(int c)
int write(byte cbuf[])
int write(byte cbuf[], int offset, int length)
Touts ces flux -readers, writers, input streams, et output streams-- sont automatiquement ouverte lors de leur création. Nous pouvons les fermer par un appel explicite à leur méthodes close.
Le ramasse miettes (garbage collector) peut implicitement fermer les flux, lorsque ceux-ci ne sont plus référencés.


Previous PageLesson ContentsNext Page Start of Tutorial > Start of Trail > Start of Lesson Search
Feedback Form

Copyright 1995-2003 Sun Microsystems, Inc. All rights reserved.