Como ler e escrever arquivos binários em Java?

A leitura e escrita de arquivos binários em Java pode ser feita com FileInputStream, FileOutputStream e DataOutputStream para manipulação eficiente de dados.

Como ler e escrever arquivos binários em Java?

A manipulação de arquivos binários em Java é essencial para lidar com imagens, vídeos, áudio e outros formatos não textuais. Para isso, utilizamos streams de entrada e saída, como FileInputStream e FileOutputStream.

1. Escrevendo um Arquivo Binário com FileOutputStream

Podemos criar um arquivo binário e escrever bytes diretamente nele.

import java.io.*;

public class EscreverBinario {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("arquivo.bin")) {
            byte[] dados = {10, 20, 30, 40, 50};
            fos.write(dados);
            System.out.println("Arquivo binário criado!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2. Lendo um Arquivo Binário com FileInputStream

Agora, vamos ler o arquivo binário criado.

import java.io.*;

public class LerBinario {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("arquivo.bin")) {
            int byteLido;
            while ((byteLido = fis.read()) != -1) {
                System.out.print(byteLido + " ");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Saída esperada:

10 20 30 40 50

3. Usando DataOutputStream e DataInputStream

Se quisermos armazenar tipos de dados como inteiros e strings em um arquivo binário, podemos usar DataOutputStream e DataInputStream.

Escrevendo Dados Tipados em um Arquivo Binário

import java.io.*;

public class EscreverDadosBinario {
    public static void main(String[] args) {
        try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("dados.bin"))) {
            dos.writeInt(100);
            dos.writeDouble(9.99);
            dos.writeUTF("Texto binário");
            System.out.println("Arquivo binário com dados criados!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Lendo Dados Tipados de um Arquivo Binário

import java.io.*;

public class LerDadosBinario {
    public static void main(String[] args) {
        try (DataInputStream dis = new DataInputStream(new FileInputStream("dados.bin"))) {
            int numero = dis.readInt();
            double decimal = dis.readDouble();
            String texto = dis.readUTF();

            System.out.println("Número: " + numero);
            System.out.println("Decimal: " + decimal);
            System.out.println("Texto: " + texto);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Saída esperada:

Número: 100
Decimal: 9.99
Texto: Texto binário

4. Comparação Entre Métodos

Método Uso
FileOutputStream / FileInputStream Leitura e escrita de bytes puros
DataOutputStream / DataInputStream Armazena dados tipados (int, double, String)

Conclusão

Manipular arquivos binários em Java permite trabalhar com dados não textuais, como imagens e vídeos. Para escrita e leitura de bytes, FileOutputStream e FileInputStream são ideais. Já DataOutputStream e DataInputStream são úteis para armazenar dados tipados.

Arquivos binários são essenciais para armazenar dados compactos e eficientes, sendo amplamente utilizados para manipulação de imagens, bancos de dados e arquivos de mídia. Sistemas de jogos, por exemplo, utilizam arquivos binários para armazenar estados do jogo e configurações de maneira otimizada.

Algumas aplicações:

  • Armazenamento de imagens e vídeos
  • Manipulação de bancos de dados binários
  • Gravação de arquivos de configuração compactos
  • Sistemas de jogos e multimídia

Dicas para quem está começando

  • Use FileOutputStream para escrita de bytes simples
  • Utilize DataOutputStream para armazenar dados tipados
  • Feche os streams corretamente para evitar vazamento de recursos
  • Teste a leitura e escrita para garantir a integridade dos dados
  • Evite modificar arquivos binários manualmente, pois podem se corromper

Contribuições de Rodrigo Farias

Compartilhe este tutorial: Como ler e escrever arquivos binários em Java

Compartilhe este tutorial

Continue aprendendo:

Como verificar se um arquivo existe antes de acessá-lo

A verificação da existência de um arquivo em Java pode ser feita com File.exists() ou Files.exists() para evitar exceções e manipular arquivos com segurança.

Tutorial anterior

Como serializar e desserializar objetos em Java

A serialização em Java permite salvar objetos em arquivos e a desserialização os recupera, utilizando a interface Serializable e fluxos de entrada e saída.

Próximo tutorial