Classe Java BufferedOutputStream

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  ();      }      }   }   

Sortie (contenu de output.txt) :

BufferedOutputStream dans l'exemple Java

Exemple 2 : Utilisation de la méthode flush()

Java
   import     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  ();      }      }   }   

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.
Créer un quiz