English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, vamos aprender com exemplos o Java BufferedOutputStream e seus métodos.
A classe BufferedOutputStream do pacote java.io é usada juntamente com outros fluxos de saída para escrever dados de maneira mais eficiente (em bytes).
Ele herda a classe abstrata OutputStream.
BufferedOutputStream mantém um8192bytesdo buffer interno.
Durante a operação de escrita, os bytes são escritos no buffer interno em vez do disco. Assim que o buffer estiver cheio ou o fluxo for fechado, todo o buffer será escrito no disco.
Portanto, reduz o número de comunicações com o disco. É por isso que a escrita de bytes usando BufferedOutputStream é mais rápida.
Para criar um BufferedOutputStream, devemos primeiro importar o pacote java.io.BufferedOutputStream. Após a importação do pacote, podemos criar o fluxo de saída.
//Criar um FileOutputStream FileOutputStream file = new FileOutputStream(String path); //Criar um BufferedOutputStream BufferedOutputStream buffer = new BufferedOutputStream(file);
No exemplo acima, criamos um BufferedOutputStream chamado buffer, usando um FileOutputStream chamado file.
Aqui, o tamanho padrão do buffer interno é8192Bites. Mas, também podemos especificar o tamanho do buffer interno.
//Cria um BufferedOutputStream com um buffer interno de tamanho especificado. BufferedOutputStream buffer = new BufferedOutputStream(file, int size);
Este buffer ajudará a escrever bytes no arquivo mais rapidamente.
A classe BufferedOutputStream fornece implementações para diferentes métodos da classe OutputStream.
write() - Escrever um byte individual no buffer interno do fluxo de saída
write(byte[] array) - Escrever os bytes do array especificado no fluxo de saída
write(byte[] arr, int start, int length)- Escrever o número especificado de bytes a partir da posição start do array na saída do fluxo
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 { //Criar um FileOutputStream FileOutputStream file = new FileOutputStream("output.txt"); //Criar um BufferedOutputStream BufferedOutputStream output = new BufferedOutputStream(file); byte[] array = data.getBytes(); //Escrever dados no fluxo de saída output.write(array); output.close(); } catch (Exception e) { e.getStackTrace(); } } }
No exemplo acima, criamos um fluxo de saída bufferizado chamado output e um FileOutputStream. O fluxo de saída está ligado ao arquivo output.txt.
FileOutputStream file = new FileOutputStream("output.txt"); BufferedOutputStream output = new BufferedOutputStream(file);
Para escrever dados no arquivo, usamos o método write().
Aqui, quando executamos o programa,output.txtO arquivo será escrito com o seguinte conteúdo.
This is a line of text inside the file.
Atenção:No programa, usamos o método getBytes() para converter uma string em um array de bytes.
Para limpar o buffer interno, podemos usar o método flush(). Este método força o fluxo de saída a escrever todos os dados existentes no buffer para o 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 { //Criar um FileOutputStream FileOutputStream file = new FileOutputStream("flush.txt"); //Criar um BufferedOutputStream BufferedOutputStream buffer = new BufferedOutputStream(file); //Escrever dados no fluxo de saída buffer.write(data.getBytes()); //Empurrar dados para o destino buffer.flush(); System.out.println("Os dados foram empurrados para o arquivo."); buffer.close(); } catch(Exception e) { e.getStackTrace(); } } }
Resultados de saída
Os dados são empurrados para o arquivo.
Quando executamos o programa, o arquivo flush.txt é preenchido com o texto representado por dados de string.
Para fechar o fluxo de saída buffering, podemos usar o método close(). Após a chamada deste método, não poderemos usar o fluxo de saída para escrever dados.