Classe Java BufferedOutputStream

In Java la classe BufferedOutputStream viene utilizzata per scrivere i dati in un flusso di output in modo più efficiente. Aggiunge un buffer a un altro flusso di output riducendo il numero di operazioni I/O archiviando temporaneamente i dati in memoria prima di scriverli nella destinazione (come un file).

Appartiene al pacchetto java.io ed estende la classe FilterOutputStream.

Dichiarazione di classe

la classe pubblica BufferedOutputStream estende FilterOutputStream

  • Migliora le prestazioni di I/O utilizzando un buffer per ridurre l'accesso diretto al disco.
  • I dati vengono scritti nel buffer e solo quando il buffer è pieno (o svuotato) vengono inviati al flusso di output sottostante.
  • Tipicamente utilizzato con FileOutputStream.
  • Aiuta nella scrittura di dati byte come file di testo di immagini e dati binari.

Costruttori

  • BufferedOutputStream(OutputStream fuori): Crea un flusso di output memorizzato nel buffer con una dimensione del buffer predefinita di 8192 byte.
  • BufferedOutputStream(OutputStream out int size): Crea un flusso di output memorizzato nel buffer con la dimensione del buffer specificata.

Metodi importanti

Metodo Descrizione
void write(int b) Scrive un singolo byte nel flusso di output.
void write(byte[] b int off int len) Scrive una parte della matrice di byte nel flusso di output.
void flush() Svuota il buffer e forza la scrittura di tutti i byte di output memorizzati nel buffer.
void close() Chiude prima il flusso scaricandolo.

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

Output (contenuto di output.txt):

BufferedOutputStream nell'esempio Java

Esempio 2: utilizzo del metodo 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  ();      }      }   }   

Output (contenuto di flush.txt):

Ciao

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

Output (contenuto delle prime righe di large.txt):

Linea 0

Linea 1

Linea 2

...

Vantaggi

  • Prestazioni di scrittura più veloci rispetto ai flussi senza buffer.
  • Riduce il numero di operazioni di scrittura fisica.
  • Consente di scrivere dati di grandi dimensioni in modo efficiente.
Crea quiz