Classe Java BufferedOutputStream
Classe Java BufferedOutputStream
Neste tutorial, aprenderemos sobre o Java BufferedOutputStream e seus métodos com a ajuda de exemplos.
O BufferedOutputStream
classe do java.io
O pacote é usado com outros fluxos de saída para gravar os dados (em bytes) com mais eficiência.
Ele estende o OutputStream
classe abstrata.
Trabalho de BufferedOutputStream
O
BufferedOutputStream
mantém um buffer interno de 8192 bytes . Durante a operação de gravação, os bytes são gravados no buffer interno em vez do disco. Uma vez que o buffer é preenchido ou o fluxo é fechado, todo o buffer é gravado no disco.
Assim, o número de comunicação com o disco é reduzido. É por isso que escrever bytes é mais rápido usando
BufferedOutputStream
. Criar um BufferedOutputStream
Para criar um
BufferedOutputStream
, devemos importar o java.io.BufferedOutputStream
pacote primeiro. Uma vez que importamos o pacote, aqui é 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
chamado buffer com o FileOutputStream
chamado arquivo . Aqui, o buffer interno tem o tamanho padrão de 8192 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
O
BufferedOutputStream
classe fornece implementações para diferentes métodos no 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 no fluxo de saídawrite(byte[] arr, int start, int length)
- escreve o número de bytes igual a comprimento para o fluxo de saída de um array começando na posição start
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 chamado output juntamente 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 output.txt arquivo é preenchido com o seguinte conteúdo.
This is a line of text inside the file.
Observação :O
getBytes()
O 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. Esse 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();
}
}
}
Saída
Data is flushed to the file.
Quando executamos o programa, o arquivo flush.txt é preenchido com o texto representado pela string data .
método close()
Para fechar o fluxo de saída em buffer, podemos usar o
close()
método. Uma vez que o método é chamado, não podemos usar o fluxo de saída para gravar os dados. Para saber mais, visite Java BufferedOutputStream (documentação oficial do Java).
Java