Manipulação de Arquivos Binários com TFileStream em Delphi

Arquivos Binários com TFileStream em Delphi
Binários – “Zeros e Uns”.

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

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. 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.
  2. Á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.
  3. 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.
  4. 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.
  5. 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

  1. Abrindo o Delphi: Abra o Delphi e crie um novo projeto VCL Forms Application
  2. 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

  1. 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.
  2. 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.
  3. 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.
Arquivos Binários com TFileStream em Delphi
Ilustração do projeto.

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!

Posts Relacionados


Deixe um comentário