Post on 04-Feb-2016
description
Aula 11 – 24/05/2014Arquivos textos
Manipulação de arquivos texto
• O armazenamento de dados em arquivos é muito utilizado em aplicações pois os dados podem persistidos em disco e armazenados por longo prazo em mídias de armazenamento secundário como pen-drive, disco rígido, HD externo.
• Os arquivos são armazenados em diretório e possuem um nome é uma extensão que os identifica. A extensão é utilizada para identificar o programa que o gerou.
• Os arquivos normalmente possuem dois formatos: o modo texto, composto por uma sequência de caracteres e o modo binário composto por uma sequência de bytes.
• Os arquivos texto são estruturas representadas por linhas, o fim da linha ou quebra de linha é representado pela presença de um marcador de final de linha, no Linux a quebra de linha é identificada pelo CR – carriage return - e no Windows é identificado pela combinação do CR – carriage return – e LF – Line feed.
• Esse por sua vez são caracteres especiais possuem um significado para o sistema operacional. Também existe o marcado EOF – End of File – que identifica o final de um arquivo.
Manipulação de arquivos em Delphi
• Vamos estudar duas formas de manipular arquivos texto em Delphi.
• Manipulação em memória
• Manipulação em disco
Manipulação em memória
• A vantagem de usar a memória para manipular arquivos é a velocidade com que os dados podem ser alterados.
• A desvantagem é que arquivos muito grandes podem consomem muita memória.
• Para manipular arquivo em memória utilizamos a classe TStringList.
• Gravar dados em um arquivo
procedure GravarArquivoStringList();var // variável que representa o arquivo Arquivo: TStringList;begin // Cria um objeto do tipo TStringList Arquivo:= TStringList.Create; try // Adiciona uma linha na lista Arquivo.Add( 'Essa é uma linha' );
// Salva o arquivo em disco Arquivo.SaveToFile('d:\dados.txt'); finally // Destroi o objeto FreeAndNil( Arquivo ); end;end;
• Ler dados de um arquivo
procedure LerArquivoStringList();var // variável que representa o arquivo Arquivo: TStringList; Indice: Integer;begin // Cria um objeto do tipo TStringList Arquivo:= TStringList.Create; try // Abre o arquivo em disco Arquivo.LoadFromFile('d:\dados.txt'); // Percorre as linhas do arquivo for Indice := 0 to Pred(Arquivo.Count) do ShowMessage( Arquivo.Strings[Indice] );
finally // Destroi o objeto FreeAndNil( Arquivo ); end;end;
Manipulação em disco
• A vantagem de manipular arquivos em disco é que não temos consume de memória no processo
• A desvantagem é que o acesso em disco pode tornar o processo lento.
• Para manipular o arquivo em disco utilizamos o tipo de dado TextFile
• Gravar dados em um arquivo
procedure GravarArquivoTextFile();var // Variável que representa o arquivo Arquivo: TextFile;begin
// Associa o nome arquivo em disco com a variável AssignFile(Arquivo, 'd:\dados.txt');
// Abre o arquivo para ser manipulado Rewrite(Arquivo);
// Escreve uma linha no arquivo Writeln(Arquivo, 'Essa é uma linha');
// Fehca o arquivo aberto CloseFile(Arquivo);end;
• Ler dados em um arquivo
procedure LerArquivoTextFile();var // Variável que representa o arquivo Arquivo: TextFile; // Auxiliar para gravas os dados da linha Linha: string;begin // Associa o nome arquivo em disco com a variável AssignFile(Arquivo, 'd:\dados.txt'); Reset(Arquivo);
// Percorre o arquvo até o seu final while (not Eof(Arquivo)) do begin // Le uma linha do arquivo Readln(Arquivo, Linha);
ShowMessage( Linha ); end;
// Fehca o arquivo aberto CloseFile(Arquivo)end;
Formatos de arquivos texto.
• Arquivo texto com caractere separador: um caractere é utilizado para separa os campos da linha
12345:FULANO DE TAL:RUA DE TESTE:SÃO MIGUEL DO OESTE
9857:CICLANO DE TAL:RUA DO BARRAO:MARAVILHA
• Arquivo texto blocado: os campos possuem um tamanho pré-definido.
000012345FULANO DE TAL RUA DE TESTE SÃO MIGUEL DO OESTE
000009857CICLANO DE TAL RUA DO BARRAO MARAVILHA