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.
Por que a manipulação de arquivos binários é crucial em sistemas modernos?
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