Veja que é muito simples abrir, ler ou escrever em um arquivo.
Vamos usar a biblioteca padrão de entrada e saída ‘es’.
Primeiro a leitura linha a linha (troque o nome do arquivo por um de seu computador);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
matriz = { }; i = 0; arquivo = es.abra( "caminho_nome_arquivo.extensao" , "leitura" ); //abre em modo leitura enquanto verdadeiro inicio //laco enquanto infinito i = i + 1; matriz[cont] = arquivo:leia(); se matriz[cont] == nulo entao quebre fim //interrompe o laco enquanto fim //fim enquanto arquivo:feche() ; //nao esqueca de fechar o objeto aberto, ok. para i = 1 , #matriz inicio //para i igual a 1 repita até o tamanho da matriz imprima ( matriz[i] ); fim //fim para |
Se você quiser ler todo o arquivo em uma única variável basta fazer o seguinte:
1 2 3 4 5 |
arq = es.abra("nome_arquivo.ext" , "leitura" ); //criando um objeto de leitura. conteudo_total = arq:leia("*t" ); //coloque entre aspas um asterisco e um t "*t" , e o arquivo será lido inteiro. arq:feche() ; //nunca esqueça de fechar o objeto aberto; imprima( conteudo_total ); |
Caso haja problemas ao abrir o arquivo o retorno será nulo, e o procedimento posterior gerará um erro.
Neste caso é bom nos precavermos vendo se a abertura ocorreu com sucesso testando a variável:
1 2 3 4 5 6 7 8 9 10 |
arq = es.abra("nome_arquivo.ext" , "leitura"); se arq <> nulo entao //testando se arq for diferente de nulo entao leia o arquivo: conteudo_total = arq:leia("*t"); arq:feche(); senao imprima"falha ao tentar abrir o arquivo"; fim //fim se arq <> ... se conteudo_total <> nulo entao imprima( conteudo_total) fim; |
———————————————- ESCREVENDO EM UM ARQUIVO ——————————————————-
Para escrever basta mudar o modo de abertura ( “leitura” para “escrita” );
1 2 3 4 5 6 7 8 9 10 |
arq = es.abra( "nome_arquivo.ext" , "escrita" ); se arq <> nulo entao arq:escreva( "Oi esta é a primeira Linha" ); arq:escreva( "\npulando uma linha\n") ; //necessário usar o ecape \n para ir em outra linha; arq:escreva("\n\n\nÚltima linha" ); arq:feche(); //nao esqueça de fechar o objeto aberto. senao imprima("Não foi possivel abrir o arquivo"); //caso arq seja nulo este comando será executado. fim |
Após a escrita vá onde salvou o arquivo e o abra em um editor para ver se deu certo.
Veja que a cada chamada de arq:escreva() um trecho é acrescentado, mas não em cada linha, isso fica a cargo do
programador usar o \n para indicar nova linha.
OBS.: Ao usar o modo “escrita” o arquivo original se já existir será sobrescrito, então muito cuidado ao usá-lo.
Mas e se o objetivo for adicionar conteúdo no arquivo sem apagar o que já está lá.
Bom é possível ler guardar o conteúdo em uma variável, concatenar e escrever.
Porém existe um jeito mais fácil, caso o que ser quer é adicionar ao final do arquivo, veja:
——————————————- ADICIONANDO CONTEÚDO SEM SOBRESCREVER O ARQUIVO ————–
1 2 3 4 5 6 7 8 9 10 |
//abra o arquivo em modo "adicao": arq = es.abra( "nome_arquivo.ext" , "adicao" ); se arq <> nulo entao arq:escreva("\n\nOla mais uma linha adicionada"); arq:feche(); //fechando o objeto senao imprima"ERRO AO ABRIR O ARQUIVO"; fim //fim se |
Caso o arquivo exista será anexado o conteúdo sem apagar o que já está lá,
se não existir o arquivo será criado e escrito normalmente o conteúdo.
——————————————- LEITURA E ESCRITA BINÁRIA ————————————————
A leitura e escrita binaria é feita da mesma forma que os modos normais. Apenas troque para “leiturabin” e “escritabin”
Leitura:
1 2 3 4 5 6 7 8 9 10 |
arq = es.abra("nome_arquivo.ext" , "leiturabin"); se arq <> nulo entao //testando se arq for diferente de nulo entao leia o arquivo: conteudo_total = arq:leia("*t"); arq:feche(); senao imprima"falha ao tentar abrir o arquivo"; fim //fim se arq <> ... se conteudo_total <> nulo entao imprima( conteudo_total) fim; |
Escrita:
1 2 3 4 5 6 7 8 9 10 |
arq = es.abra( "nome_arquivo.ext" , "escritabin" ); se arq <> nulo entao arq:escreva( "Oi esta é a primeira Linha" ); arq:escreva( "\npulando uma linha\n") ; //necessário usar o ecape \n para ir em outra linha; arq:escreva("\n\n\nÚltima linha" ); arq:feche(); //nao esqueça de fechar o objeto aberto. senao imprima("Erro ao abrir o arquivo"); //caso arq seja nulo este comando será executado. fim |
A escrita binária é boa para escrever o resultado de uma string.compile ( ) (veja no manual básico biblioteca string)
OBS.: Fluxo Binário
Um fluxo binário é composto por uma seqüência de bytes lidos, sem tradução, diretamente do dispositivo externo. Não ocorre nenhuma tradução e existe uma correspondência um para um entre os dados do dispositivo e os que estão no fluxo.
Bom é isso aí pessoal, já sabem o básico para leitura e escrita de arquivos, ok.
Qualquer dúvida deixem nos comentários: