En Java, la classe BufferedOutputStream est utilisée pour écrire plus efficacement des données dans un flux de sortie. Il ajoute un tampon à un autre flux de sortie réduisant le nombre d'opérations d'E/S en stockant temporairement les données en mémoire avant de les écrire vers la destination (comme un fichier).
Il appartient au package java.io et étend la classe FilterOutputStream.
Déclaration de classe
la classe publique BufferedOutputStream étend FilterOutputStream
- Améliore les performances d'E/S en utilisant un tampon pour réduire l'accès direct au disque.
- Les données sont écrites dans le tampon et ce n'est que lorsque le tampon est plein (ou vidé) qu'elles sont envoyées au flux de sortie sous-jacent.
- Généralement utilisé avec FileOutputStream.
- Aide à écrire des données d'octets telles que des fichiers texte d'images et des données binaires.
Constructeurs
- BufferedOutputStream (sortie OutputStream) : Crée un flux de sortie mis en mémoire tampon avec une taille de tampon par défaut de 8 192 octets.
- BufferedOutputStream (OutputStream hors taille entière) : Crée un flux de sortie mis en mémoire tampon avec la taille de tampon spécifiée.
Méthodes importantes
| Méthode | Description |
|---|---|
void write(int b) | Écrit un seul octet dans le flux de sortie. |
void write(byte[] b int off int len) | Écrit une partie du tableau d'octets dans le flux de sortie. |
void flush() | Vide le tampon et force l'écriture de tous les octets de sortie mis en tampon. |
void close() | Ferme le flux en le vidant en premier. |
Java import java.io.*; public class BufferedOutputStreamExample { public static void main(String[] args) { String data = 'BufferedOutputStream in Java Example'; try { FileOutputStream fileOut = new FileOutputStream('output.txt'); BufferedOutputStream bufferOut = new BufferedOutputStream(fileOut); byte[] bytes = data.getBytes(); bufferOut.write(bytes); bufferOut.close(); System.out.println('Data written successfully.'); } catch (IOException e) { e.printStackTrace(); } } }
import java.io.*; public class BufferedOutputStreamExample { public static void main(String[] args) { String data = 'BufferedOutputStream in Java Example'; try { FileOutputStream fileOut = new FileOutputStream('output.txt'); BufferedOutputStream bufferOut = new BufferedOutputStream(fileOut); byte[] bytes = data.getBytes(); bufferOut.write(bytes); bufferOut.close(); System.out.println('Data written successfully.'); } catch (IOException e) { e.printStackTrace(); } } }
Sortie (contenu de output.txt) :
BufferedOutputStream dans l'exemple Java
Exemple 2 : Utilisation de la méthode flush()
Javaimport java.io.*; public class FlushExample { public static void main(String[] args) { try { FileOutputStream fileOut = new FileOutputStream('flush.txt'); BufferedOutputStream bufferOut = new BufferedOutputStream(fileOut); bufferOut.write('Hello'.getBytes()); bufferOut.flush(); // ensures data is written immediately bufferOut.close(); System.out.println('Flush example completed.'); } catch (IOException e) { e.printStackTrace(); } } }
Sortie (contenu de flush.txt) :
Bonjour
Java import java.io.*; public class LargeDataExample { public static void main(String[] args) { try { FileOutputStream fileOut = new FileOutputStream('large.txt'); BufferedOutputStream bufferOut = new BufferedOutputStream(fileOut 8192); // custom buffer size for (int i = 0; i < 1000; i++) { bufferOut.write(('Line ' + i + 'n').getBytes()); } bufferOut.close(); System.out.println('Large data written successfully.'); } catch (IOException e) { e.printStackTrace(); } } }
import java.io.*; public class LargeDataExample { public static void main(String[] args) { try { FileOutputStream fileOut = new FileOutputStream('large.txt'); BufferedOutputStream bufferOut = new BufferedOutputStream(fileOut 8192); // custom buffer size for (int i = 0; i < 1000; i++) { bufferOut.write(('Line ' + i + 'n').getBytes()); } bufferOut.close(); System.out.println('Large data written successfully.'); } catch (IOException e) { e.printStackTrace(); } } }
Résultat (contenu des premières lignes du fichier large.txt) :
Ligne 0
Ligne 1
Ligne 2
...
Avantages
- Performances d'écriture plus rapides par rapport aux flux sans tampon.
- Réduit le nombre d’opérations d’écriture physique.
- Permet d'écrire efficacement des données volumineuses.