Neste tutorial, aprenderemos sobre Java BufferedOutputStream e seus métodos com a ajuda de exemplos.
A BufferedOutputStream
classe do java.io
pacote é usada com outros fluxos de saída para gravar os dados (em bytes) com mais eficiência.
Ele estende a OutputStream
classe abstrata.
Trabalho de BufferedOutputStream
O BufferedOutputStream
manté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.BufferedOutputStream
primeiro 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 BufferdOutputStream
buffer nomeado com o FileOutputStream
arquivo 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 BufferedOutputStream
classe fornece implementações para diferentes métodos na OutputStream
classe.
Método write ()
write()
- grava um único byte no buffer interno do fluxo de saídawrite(byte() array)
- grava os bytes da matriz especificada para o fluxo de saídawrite(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).