Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Java BufferedOutputStream: Escrita Eficiente de Bytes Explicada

Java BufferedOutputStream: Escrita Eficiente de Bytes Explicada

Domine a classe BufferedOutputStream — seu design, uso e métodos principais — através de explicações claras e snippets de código práticos.

A classe BufferedOutputStream, parte do pacote java.io, envolve outro OutputStream para acelerar saída de nível de byte. Ao bufferizar dados na memória, reduz o número de operações de escrita no dispositivo subjacente, o que pode melhorar dramaticamente a performance, especialmente para arquivos grandes.

Ela herda da classe abstrata OutputStream e fornece implementações concretas para seus métodos.


Como BufferedOutputStream Funciona

O stream aloca internamente um buffer de 8 KiB (8.192 bytes) por padrão. Quando write() é chamado, bytes são primeiro armazenados neste buffer. Apenas quando o buffer está cheio, ou quando flush() ou close() é invocado, os dados são descarregados para o stream subjacente.

Como I/O de disco é caro, essa estratégia de bufferização reduz viagens de ida e volta e torna escritas de byte consideravelmente mais rápidas.


Criando um BufferedOutputStream

Importe a classe e então envolva qualquer OutputStream, tipicamente um FileOutputStream:

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

Para controlar o tamanho do buffer, forneça um segundo argumento:

BufferedOutputStream buffer = new BufferedOutputStream(file, 16384); // buffer 16 KiB

Escolher um buffer maior pode ser benéfico para escritas muito grandes, mas o padrão de 8 KiB funciona bem para a maioria dos cenários.


Métodos Principais do BufferedOutputStream

A classe implementa o conjunto completo de métodos de OutputStream com suporte a buffer.

write()

Exemplo: Escrevendo Texto em um Arquivo

import java.io.*;

public class Main {
    public static void main(String[] args) {
        String dados = "Esta é uma linha de texto dentro do arquivo";
        try (FileOutputStream fos = new FileOutputStream("output.txt");
             BufferedOutputStream bos = new BufferedOutputStream(fos)) {
            bos.write(dados.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Executar este programa cria output.txt contendo:

Esta é uma linha de texto dentro do arquivo

Nota: String.getBytes() converte a string em um array de bytes usando o charset padrão da plataforma. Para resultados determinísticos, especifique um charset, ex: dados.getBytes(StandardCharsets.UTF_8).


flush()

Força quaisquer dados em buffer a serem escritos no stream subjacente imediatamente. Isso é útil quando você precisa garantir persistência de dados antes de fechar o stream ou ao escrever em um socket de rede.

BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write(dados.getBytes());
bos.flush(); // garante que dados sejam enviados

close()

Fecha o stream, liberando quaisquer dados restantes e liberando recursos do sistema. Após chamar close(), o stream não pode ser usado novamente.


Para uma referência abrangente, consulte a documentação oficial do Java: API BufferedOutputStream.

Java

  1. Entendendo a Palavra-chave final em Java: Variáveis, Métodos e Classes
  2. Operador instanceof em Java: Guia Completo
  3. Dominando Herança em Java: Conceitos, Tipos e Exemplos Práticos
  4. Entendendo Classes Aninhadas Estáticas em Java: Uso, Diferenças e Exemplos
  5. Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
  6. Padrão Singleton em Java Explicado: Como Implementar e Usar com Segurança
  7. Dominando Reflection em Java: Inspecionando Classes, Métodos e Campos em Tempo de Execução
  8. Dominando Java ObjectOutputStream: Serialização, Métodos e Exemplos Práticos
  9. Dominando Java Generics – Construindo Código Reutilizável e Type-Safe
  10. Dominando Operações de Arquivo em Java com java.io – Criação, Leitura, Escrita e Exclusão