
Índice
Introdução
Nesse post iremos abordar sobre manipulação de arquivos binários com TFileStream em Delphi.
A manipulação de arquivos é uma habilidade essencial para qualquer desenvolvedor, pois permite que programas leiam, escrevam e processem dados armazenados em arquivos. Em Delphi, a manipulação de arquivos binários é facilitada pela classe TFileStream
, que permite ler e escrever bytes diretamente. Neste artigo, vamos explorar a leitura e escrita em arquivos binários utilizando TFileStream
. Mas antes de partir para a prática, vamos entender melhor o que são os arquivos binários.
Para que Servem os Arquivos Binários?
Arquivos binários são uma forma eficiente e versátil de armazenar dados que não se limitam a texto simples. Eles são utilizados em diversas aplicações devido à sua capacidade de armazenar qualquer tipo de informação, incluindo texto, números, imagens, áudio, vídeo, e mais. Neste texto, vamos explorar para que servem os arquivos binários, suas vantagens e alguns exemplos de uso.
O Que São Arquivos Binários?
Um arquivo binário é um arquivo que contém dados em um formato que não é diretamente legível por humanos. Diferente dos arquivos de texto, que armazenam dados como sequências de caracteres legíveis, os arquivos binários armazenam dados em formato bruto, como uma sequência de bytes. Isso permite que qualquer tipo de informação seja armazenada de forma eficiente.
Vantagens dos Arquivos Binários
- Eficiência de Armazenamento: Arquivos binários ocupam menos espaço em disco em comparação com arquivos de texto, especialmente quando se trata de grandes volumes de dados numéricos ou multimídia.
- Velocidade de Acesso: A leitura e escrita de dados binários é geralmente mais rápida, pois não há necessidade de converter dados para um formato legível por humanos.
- Flexibilidade: Qualquer tipo de dados pode ser armazenado em um arquivo binário, tornando-os ideais para aplicações que lidam com dados complexos ou heterogêneos.
- Integridade dos Dados: Como os arquivos binários armazenam dados no formato bruto, eles preservam a precisão e integridade dos dados, especialmente para tipos de dados complexos ou de alta precisão.
Exemplos de Uso dos Arquivos Binários
- Imagens e Gráficos: Formatos de arquivo como JPEG, PNG e BMP são exemplos clássicos de arquivos binários. Eles armazenam dados de imagem de forma compacta e eficiente.
- Áudio e Vídeo: Arquivos de áudio (MP3, WAV) e vídeo (MP4, AVI) são armazenados em formatos binários, permitindo uma alta compressão e eficiência na leitura e escrita.
- Documentos e Arquivos de Dados: Documentos PDF, arquivos do Microsoft Word e planilhas do Excel são armazenados em formatos binários para suportar dados complexos e diversos tipos de conteúdo.
- Aplicações e Executáveis: Programas compilados e aplicativos são armazenados como arquivos binários executáveis (EXE, DLL), que o sistema operacional pode carregar e executar diretamente.
- Bancos de Dados: Muitos sistemas de banco de dados armazenam seus dados em arquivos binários para garantir eficiência no acesso e integridade dos dados.
Manipulação de Arquivos Binários
A classe TFileStream
é a escolha ideal para manipulação de arquivos binários. Ela permite ler e escrever bytes diretamente, o que é útil para trabalhar com dados binários. Segue abaixo um exemplo prático de leitura e escrita em arquivos binários.
Configurando o Ambiente
- Abrindo o Delphi: Abra o Delphi e crie um novo projeto VCL Forms Application
- Configurando o Formulário Principal: Adicione o seguinte componente ao formulário:
- TMemo(Memo1)
Exemplo Prático: Leitura e Escrita em Arquivos Binários com TFileStream
em Delphi
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; procedure FormShow(Sender: TObject); private procedure ReadBinaryFile(const FileName: string); procedure WriteBinaryFile(const FileName: string; const Data: array of Byte); { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WriteBinaryFile(const FileName: string; const Data: array of Byte); var FileStream: TFileStream; begin FileStream := TFileStream.Create(FileName, fmCreate); try FileStream.WriteBuffer(Data[0], Length(Data)); finally FileStream.Free; end; end; procedure TForm1.FormShow(Sender: TObject); begin try WriteBinaryFile('example.bin', [1, 2, 3, 4, 5]); //Escreve no arquivo binário ReadBinaryFile('example.bin'); //Lê do arquivo Binário except on E: Exception do ShowMessage(E.ClassName+ ': '+ E.Message); end; end; procedure TForm1.ReadBinaryFile(const FileName: string); var FileStream: TFileStream; Buffer: array of Byte; I: Integer; begin FileStream := TFileStream.Create(FileName, fmOpenRead); try SetLength(Buffer, FileStream.Size); FileStream.ReadBuffer(Buffer[0], FileStream.Size); for I := 0 to Length(Buffer) - 1 do Memo1.Lines.Add(IntToStr(Integer(Buffer[I]))); //Adiciona cada linha do arquivo binário armazenada na variável Buffer no Memo1 finally FileStream.Free; end; end; end.
Explicação do Código
- WriteBinaryFile: Esta função grava um array de inteiros em um arquivo binário.
TFileStream.Create
abre o arquivo para escrita (fmCreate
).WriteBuffer
escreve o conteúdo do array no arquivo. - ReadBinaryFile: Esta função lê os inteiros armazenados no arquivo binário.
TFileStream.Create
abre o arquivo para leitura (fmOpenRead
).ReadBuffer
lê o conteúdo do arquivo para um array, que é então exibido no console. - FormShow : Nesse evento que é executado quando a tela é aberta, chama as funções
WriteBinaryFile
e
.ReadBinaryFile
Nesse exemplo o componente TMemo foi utilizado apenas para facilitar a visualização do conteúdo do arquivo gravado, pois os dados estavam todos armazenados na variável Buffer que recebeu os dados da variável FileStrem que é do tipo TFileStream.
Vantagens da Classe TFileStream
- Flexibilidade:
TFileStream
permite manipular qualquer tipo de arquivo, seja ele texto ou binário, com operações de leitura e escrita de baixo nível. - Eficácia: A classe é eficiente e bem integrada ao ambiente Delphi, proporcionando alto desempenho em operações de manipulação de arquivos.

Código fonte do exemplo
Você pode fazer o download do exemplo do projeto através do repositório do github:
https://github.com/Gisele-de-Melo/FileStream
Conclusão
Manipular arquivos binários em Delphi é uma tarefa que se torna simples com o uso da classe TFileStream
. Com TFileStream
, a leitura e escrita de bytes se torna uma operação direta e flexível, permitindo que você lide com dados binários de forma eficiente.
Com os exemplos fornecidos, você agora tem uma base sólida para começar a manipular arquivos binários em Delphi. Lembre-se de seguir as boas práticas de programação para garantir que seu código seja robusto e fácil de manter. Boa sorte em seus projetos de programação em Delphi!