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

Contents Haut

Byte streams

Contents Haut

Characters streams

Contents Haut

English translation

You have asked to visit this site in English. For now, only the interface is translated, but not all the content yet.

If you want to help me in translations, your contribution is welcome. All you need to do is register on the site, and send me a message asking me to add you to the group of translators, which will give you the opportunity to translate the pages you want. A link at the bottom of each translated page indicates that you are the translator, and has a link to your profile.

Thank you in advance.

Document created the 24/06/2005, last modified the 02/08/2019
Source of the printed document:https://www.gaudry.be/en/java-streams.html

The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.

Notes

  1.  flux d'entrée : corresponds to “input stream” en anglais

  2.  flux de sortie : corresponds to “output stream” en anglais

  3.  Byte streams : corresponds to « flux d'octets » en français

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

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

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

Contents Haut