Tampon :
Il s'agit d'un région d'une mémoire physique utilisé pour stocker temporairement des données pendant qu'elles sont déplacées d'un endroit à un autre. Ce site stockage de la mémoire physique serait RAM (Random-access memory) dans la plupart des cas.
Mais d'après le contexte de cette question, Tampon est utilisé lors de la lecture/écriture des données. Il n'est pas nécessaire de l'utiliser pour déplacer des données d'un endroit à un autre.
Exemple de tampon : Si votre système dispose de 4 Go de RAM, 4 Ko de mémoire (RAM) peuvent être alloués pour les éléments suivants Tampon par le système. Ko - Kilobyte(s), GB - Gigabyte(s)
Flux d'E/S (ou) Stream :
Flux d'E/S représente une source d'entrée ou une destination de sortie. Un flux peut représenter de nombreux types différents de sources et de destinations, notamment des fichiers sur disque, des périphériques, d'autres programmes et des tableaux de mémoire.
I/O signifie entrée/sortie.
Ainsi, le flux d'entrée peut être une source d'entrée comme un fichier disque, une connexion réseau, etc.
Et, le flux de sortie peut être une destination de sortie comme un fichier disque, une connexion réseau, etc.
Selon Documentation officielle de JAVA Les cours d'eau sont de 3 types.
-
Flux d'octets (lecture ou écriture d'octets)
-
Filières de caractères (lire ou écrire des caractères)
-
Cours d'eau tamponnés (lire à partir de, ou écrire à, Tampon pour l'efficacité)
Flux d'octets :
Ils effectuent l'entrée et la sortie d'octets de 8 bits. Toutes les classes de flux d'octets descendent de InputStream y OutputStream .
Les classes de flux d'entrée d'octets obtiennent l'entrée comme octets bruts . Les classes de flux de sortie d'octets donnent une sortie comme octets bruts .
InputStream
- Sous-classes directes connues
AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream.
OutputStream
- Sous-classes directes connues
ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream
Les courants de caractères : Ils constituent une couche au-dessus des flux d'octets. Ils convertissent les octets (données binaires) en caractères et les caractères en octets, en utilisant un codage de caractères.
Toutes les classes de flux de caractères descendent de Lecteur y Écrivain .
Reader
- Sous-classes directes connues
BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader
Writer
- Sous-classes directes connues
BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter
Flux d'octets et flux de caractères utiliser E/S non tamponnées .
Cela signifie que chaque demande de lecture ou d'écriture est traitée directement par le système d'exploitation sous-jacent. Cela peut rendre un programme beaucoup moins efficace, car chacune de ces requêtes déclenche souvent un accès au disque, une activité réseau, ou toute autre opération relativement coûteuse. Pour réduire ce type de surcharge, la plate-forme Java met en œuvre des fonctions de mise en mémoire tampon. flux d'E/S.
Cours d'eau tamponnés :
Flux d'entrée tamponnés lire les données à partir de une zone de mémoire connue sous le nom de tampon ; l'API d'entrée native n'est appelée que lorsque le tampon est vide.
De même, les flux de sortie tamponnés écrire des données dans un tampon et l de sortie native n'est appelée que lorsque le tampon est plein.
Un programme peut convertir un sans tampon dans un tamponné flux en utilisant l'idiome de l'enveloppement, où l'élément sans tampon est passé au constructeur d'un objet de type tamponné classe de flux.
Exemple :
inputStream = new BufferedReader(new FileReader("xanadu.txt"));
outputStream = new BufferedWriter(new FileWriter("characteroutput.txt"));
Il existe 4 classes de flux tamponnés qui sont utilisées pour envelopper les flux non tamponnés :
Pour créer tamponné Flux d'octets utiliser, BufferedInputStream
y BufferedOutputStream
classes.
Pour créer tamponné Filières de caractères utiliser, BufferedReader
y BufferedWriter
classes.