logo

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

MetodoDescrizione
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