Java BufferedOutputStream (con esempi)

In questo tutorial, impareremo a conoscere Java BufferedOutputStream e i suoi metodi con l'aiuto di esempi.

La BufferedOutputStreamclasse del java.iopacchetto viene utilizzata con altri flussi di output per scrivere i dati (in byte) in modo più efficiente.

Estende la OutputStreamclasse astratta.

Utilizzo di BufferedOutputStream

Il BufferedOutputStreammantiene un interno di buffer di 8192 byte .

Durante l'operazione di scrittura, i byte vengono scritti nel buffer interno invece che sul disco. Una volta riempito il buffer o chiuso il flusso, l'intero buffer viene scritto sul disco.

Pertanto, il numero di comunicazioni con il disco è ridotto. Questo è il motivo per cui la scrittura di byte è più veloce utilizzando BufferedOutputStream.

Crea un BufferedOutputStream

Per creare un BufferedOutputStream, dobbiamo java.io.BufferedOutputStreamprima importare il pacchetto. Una volta importato il pacchetto, ecco come possiamo creare il flusso di output.

 // Creates a FileOutputStream FileOutputStream file = new FileOutputStream(String path); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferOutputStream(file); 

Nell'esempio precedente, abbiamo creato un BufferdOutputStreambuffer denominato con il FileOutputStreamfile denominato.

Qui, il buffer interno ha la dimensione predefinita di 8192 byte. Tuttavia, possiamo specificare anche la dimensione del buffer interno.

 // Creates a BufferedOutputStream with specified size internal buffer BufferedOutputStream buffer = new BufferOutputStream(file, int size); 

Il buffer aiuterà a scrivere i byte nei file più rapidamente.

Metodi di BufferedOutputStream

La BufferedOutputStreamclasse fornisce implementazioni per diversi metodi nella OutputStreamclasse.

metodo write ()

  • write() - scrive un singolo byte nel buffer interno del flusso di output
  • write(byte() array) - scrive i byte dall'array specificato nel flusso di output
  • write(byte() arr, int start, int length) - scrive il numero di byte pari alla lunghezza nel flusso di output da un array a partire dalla posizione iniziale

Esempio: BufferedOutputStream per scrivere dati in un file

 import java.io.FileOutputStream; import java.io.BufferedOutputStream; public class Main ( public static void main(String() args) ( String data = "This is a line of text inside the file"; try ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream("output.txt"); // Creates a BufferedOutputStream BufferedOutputStream output = new BufferedOutputStream(file); byte() array = data.getBytes(); // Writes data to the output stream output.write(array); output.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Nell'esempio precedente, abbiamo creato un flusso di output bufferizzato denominato output insieme a FileOutputStream. Il flusso di output è collegato al file output.txt .

 FileOutputStream file = new FileOutputStream("output.txt"); BufferedOutputStream output = new BufferedOutputStream(file); 

Per scrivere dati nel file, abbiamo utilizzato il write()metodo.

Qui quando eseguiamo il programma, il file output.txt viene riempito con il seguente contenuto.

 This is a line of text inside the file. 

Nota : il getBytes()metodo utilizzato nel programma converte una stringa in un array di byte.

metodo flush ()

Per cancellare il buffer interno, possiamo usare il flush()metodo. Questo metodo forza il flusso di output a scrivere tutti i dati presenti nel buffer nel file di destinazione. Per esempio,

 import java.io.FileOutputStream; import java.io.BufferedOutputStream; public class Main ( public static void main(String() args) ( String data = "This is a demo of the flush method"; try ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream(" flush.txt"); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferedOutputStream(file); // Writes data to the output stream buffer.write(data.getBytes()); // Flushes data to the destination buffer.flush(); System.out.println("Data is flushed to the file."); buffer.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Produzione

 I dati vengono trasferiti nel file. 

Quando eseguiamo il programma, il file flush.txt viene riempito con il testo rappresentato dalla stringa data.

metodo close ()

Per chiudere il flusso di output bufferizzato, possiamo usare il close()metodo. Una volta chiamato il metodo, non possiamo usare il flusso di output per scrivere i dati.

Per saperne di più, visita Java BufferedOutputStream (documentazione Java ufficiale).

Articoli interessanti...