Java BufferedOutputStream (com exemplos)

Neste tutorial, aprenderemos sobre Java BufferedOutputStream e seus métodos com a ajuda de exemplos.

A BufferedOutputStreamclasse do java.iopacote é usada com outros fluxos de saída para gravar os dados (em bytes) com mais eficiência.

Ele estende a OutputStreamclasse abstrata.

Trabalho de BufferedOutputStream

O BufferedOutputStreammantém um buffer interno de 8.192 bytes .

Durante a operação de gravação, os bytes são gravados no buffer interno em vez de no disco. Uma vez que o buffer é preenchido ou o fluxo é fechado, todo o buffer é gravado no disco.

Conseqüentemente, o número de comunicação com o disco é reduzido. É por isso que escrever bytes é mais rápido usando BufferedOutputStream.

Crie um BufferedOutputStream

Para criar um BufferedOutputStream, devemos java.io.BufferedOutputStreamprimeiro importar o pacote. Depois de importar o pacote, aqui está como podemos criar o fluxo de saída.

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

No exemplo acima, criamos um BufferdOutputStreambuffer nomeado com o FileOutputStreamarquivo nomeado.

Aqui, o buffer interno tem o tamanho padrão de 8.192 bytes. No entanto, também podemos especificar o tamanho do buffer interno.

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

O buffer ajudará a gravar bytes em arquivos mais rapidamente.

Métodos de BufferedOutputStream

A BufferedOutputStreamclasse fornece implementações para diferentes métodos na OutputStreamclasse.

Método write ()

  • write() - grava um único byte no buffer interno do fluxo de saída
  • write(byte() array) - grava os bytes da matriz especificada para o fluxo de saída
  • write(byte() arr, int start, int length) - escreve o número de bytes igual ao comprimento para o fluxo de saída de uma matriz começando na posição inicial

Exemplo: BufferedOutputStream para gravar dados em um arquivo

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

No exemplo acima, criamos um fluxo de saída em buffer denominado output junto com FileOutputStream. O fluxo de saída está vinculado ao arquivo output.txt .

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

Para gravar dados no arquivo, usamos o write()método.

Aqui, quando executamos o programa, o arquivo output.txt é preenchido com o seguinte conteúdo.

 This is a line of text inside the file. 

Nota : O getBytes()método usado no programa converte uma string em uma matriz de bytes.

Método flush ()

Para limpar o buffer interno, podemos usar o flush()método. Este método força o fluxo de saída a gravar todos os dados presentes no buffer no arquivo de destino. Por exemplo,

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

Resultado

 Os dados são liberados para o arquivo. 

Quando executamos o programa, o arquivo flush.txt é preenchido com o texto representado pelos dados da string.

Método close ()

Para fechar o fluxo de saída em buffer, podemos usar o close()método. Depois que o método é chamado, não podemos usar o fluxo de saída para escrever os dados.

Para saber mais, visite Java BufferedOutputStream (documentação oficial do Java).

Artigos interessantes...