110 likes | 203 Views
Aula 11 – 24/05/2014. Arquivos 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.
E N D
Aula 11 – 24/05/2014 Arquivos 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 – carriagereturn - e no Windows é identificado pela combinação do CR – carriagereturn – e LF – Linefeed. • Esse por sua vez são caracteres especiais possuem um significado para o sistema operacional. Também existe o marcado EOF – Endof 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.
procedureGravarArquivoStringList(); 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; • Gravar dados em um arquivo
procedureLerArquivoStringList(); 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 forIndice:=0toPred(Arquivo.Count) do ShowMessage( Arquivo.Strings[Indice] ); finally // Destroi o objeto FreeAndNil( Arquivo ); end; end; • Ler dados de um arquivo
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
procedureGravarArquivoTextFile(); 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; • Gravar dados em um arquivo
procedureLerArquivoTextFile(); 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 (notEof(Arquivo)) do begin // Le uma linha do arquivo • Readln(Arquivo,Linha); ShowMessage( Linha ); end; // Fehca o arquivo aberto CloseFile(Arquivo) end; • Ler dados em um arquivo
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