Vue d'ensemble des flux en Java

Les flux permettent de lire ou d'écrire de l'information depuis et vers n'importe quelle source de données capable d'émettre une suite d'octets. Ces sources et destinations de nos informations peuvent être des fichiers, des connexions réseau, ou même des blocs en mémoire.

Le canal par lequel nous pouvons lire une suite d'octets se nomme le « flux d'entrée » (en anglais, “input stream”), et le canal par lequel nous pouvons écrire des suites d'octets est le « flux de sortie » (en anglais, “output stream”)

Nous devons distinguer deux grandes catégorie de flux :

  • “Byte streams”3 : les flux d'octets permettent la manipulation de tout caractère encodé sur 8 bits (1 octet, d'où le nom byte stream). Exemple : ISO-Latin-1.
  • “Character streams”4 : les flux de caractères nous permettent la manipulation des caractères codés en UNICODE, sur 16 bits (2 octets). Les classes abstraites java.io.Reader et java.io.Writer possèdent donc les opérations nécessaires au traitement d'UNICODE.

Ces classes se trouvent dans le package java.IO
Toutes les méthodes sur les flots peuvent renvoyer System.IO.IOException.

Exemples de flux de sources de données

Java propose une classe adaptée à la manipulation de chaque type de flux de données (fichier, chaîne de caractères, tableau d'octets, pipeline), mais il existe aussi un ensemble de classes de filtres dérivées des classes abstraites java.io.FilterInputStream et java.io.FilterOutputStream qui peuvent s'utiliser ensemble pour simplifier ou optimiser l'accès aux flux. Nous pouvons manipuler les flux entrants ou sortants avec les mêmes classes, quelque soit le type de source de données, contrairement au C où il existe des fonctions différentes suivant le type de source de données (comme scanf(), fscanf(), sscanf()).

  • un tableau d'octets (classes java.io.ByteArrayInputStream et java.io.ByteArrayOutputStream).
  • une chaîne de caractères (classe java.io.StringBufferInputStream).
  • un fichier (classes java.io.FileInputStream et java.io.FileOutputStream).
  • un pipe (classes java.io.PipedInputStream et java.io.PipedOutputStream).
  • l'entrée et les sorties standards (champs System.in, System.out et System.err ou un des java.io.FileDescriptor : FileDescriptor.in, FileDescriptor.out et FileDescriptor.err).
  • une URL
  • un socket

Table des matières Haut

Byte streams

Table des matières Haut

Characters streams

Table des matières Haut

Document créé le 24/06/2005, dernière modification le 02/08/2019
Source du document imprimé : https://www.gaudry.be/java-streams.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Notes

  1.  flux d'entrée : correspond à “input stream” en anglais

  2.  flux de sortie : correspond à “output stream” en anglais

  3.  Byte streams : correspond à « flux d'octets » en français

  4.  Character streams : correspond à « flux de caractères » en français

  5.  Uniform Resource Locator : correspond à « localisateur uniforme de ressource » en français

  6.  URL : “Uniform Resource Locator” (en français, « localisateur uniforme de ressource »)

Table des matières Haut