English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriais Básicos de Java

Java controle de fluxo

Java array

Java orientado a objetos (I)

Java orientado a objetos (II)

Java orientado a objetos (III)

Tratamento de Exceções Java

Java Listas (List)

Java Filas (Queue)

Java Mapas (Map)

Java Conjuntos (Set)

Java Entrada e Saída (I/O)/O)

Java Reader/Writer

Temas Java

Classe Java BufferedOutputStream

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.

Funcionamento do BufferedOutputStream

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.

Criar um BufferedOutputStream

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.

Métodos do BufferedOutputStream

A classe BufferedOutputStream fornece implementações para diferentes métodos da classe OutputStream.

método write()

  • 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

Exemplo: BufferedOutputStream escrevendo dados no 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 {
            //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.

Método flush()

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.

Método close()

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.