{"id":960,"date":"2015-05-23T16:43:51","date_gmt":"2015-05-23T16:43:51","guid":{"rendered":"http:\/\/linguagemprisma.net\/blog\/?p=960"},"modified":"2015-05-23T16:51:16","modified_gmt":"2015-05-23T16:51:16","slug":"leitura-e-escrita-em-arquivos","status":"publish","type":"post","link":"https:\/\/linguagemprisma.br4.biz\/blog\/modo_texto\/leitura-e-escrita-em-arquivos\/","title":{"rendered":"Leitura e Escrita em Arquivos"},"content":{"rendered":"<p>Veja que \u00e9 muito simples abrir, ler ou escrever em um arquivo.<\/p>\n<p>Vamos usar a biblioteca padr\u00e3o de entrada e sa\u00edda &#8216;es&#8217;.<\/p>\n<p>Primeiro a leitura linha a linha (troque o nome do arquivo por um de seu computador);<\/p>\n<pre class=\"lang:prisma decode:true \">matriz = { };\r\ni = 0;\r\narquivo = es.abra( \"caminho_nome_arquivo.extensao\" , \"leitura\" ); \/\/abre em modo leitura\r\n\r\nenquanto verdadeiro inicio \/\/laco enquanto infinito\r\ni = i + 1;\r\nmatriz[cont] = arquivo:leia();\r\nse matriz[cont] == nulo entao quebre fim \/\/interrompe o laco enquanto\r\nfim \/\/fim enquanto\r\n\r\narquivo:feche() ; \/\/nao esqueca de fechar o objeto aberto, ok.\r\n\r\npara i = 1 , #matriz inicio \/\/para i igual a 1 repita at\u00e9 o tamanho da matriz\r\nimprima ( matriz[i] );\r\nfim \/\/fim para\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Se voc\u00ea quiser ler todo o arquivo em uma \u00fanica vari\u00e1vel basta fazer o seguinte:<\/p>\n<pre class=\"lang:prisma decode:true \">arq = es.abra(\"nome_arquivo.ext\" , \"leitura\" ); \/\/criando um objeto de leitura.\r\nconteudo_total = arq:leia(\"*t\" ); \/\/coloque entre aspas um asterisco e um t \"*t\" , e o arquivo ser\u00e1 lido inteiro.\r\narq:feche() ; \/\/nunca esque\u00e7a de fechar o objeto aberto;\r\n\r\nimprima( conteudo_total );\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Caso haja problemas ao abrir o arquivo o retorno ser\u00e1 nulo, e o procedimento posterior gerar\u00e1 um erro.<br \/>\nNeste caso \u00e9 bom nos precavermos vendo se a abertura ocorreu com sucesso testando a vari\u00e1vel:<\/p>\n<pre class=\"lang:prisma decode:true \">arq = es.abra(\"nome_arquivo.ext\" , \"leitura\");\r\n\r\nse arq &lt;&gt; nulo entao \/\/testando se arq for diferente de nulo entao leia o arquivo:\r\nconteudo_total = arq:leia(\"*t\");\r\narq:feche();\r\nsenao\r\nimprima\"falha ao tentar abrir o arquivo\";\r\nfim \/\/fim se arq &lt;&gt; ...\r\n\r\nse conteudo_total &lt;&gt; nulo entao imprima( conteudo_total) fim;\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- ESCREVENDO EM UM ARQUIVO &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>Para escrever basta mudar o modo de abertura ( &#8220;leitura&#8221; para &#8220;escrita&#8221; );<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:prisma decode:true \">arq = es.abra( \"nome_arquivo.ext\" , \"escrita\" );\r\n\r\nse arq &lt;&gt; nulo entao\r\narq:escreva( \"Oi esta \u00e9 a primeira Linha\" );\r\narq:escreva( \"\\npulando uma linha\\n\") ; \/\/necess\u00e1rio usar o ecape \\n para ir em outra linha;\r\narq:escreva(\"\\n\\n\\n\u00daltima linha\" );\r\narq:feche(); \/\/nao esque\u00e7a de fechar o objeto aberto.\r\nsenao\r\nimprima(\"N\u00e3o foi possivel abrir o arquivo\"); \/\/caso arq seja nulo este comando ser\u00e1 executado.\r\nfim\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Ap\u00f3s a escrita v\u00e1 onde salvou o arquivo e o abra em um editor para ver se deu certo.<br \/>\nVeja que a cada chamada de arq:escreva() um trecho \u00e9 acrescentado, mas n\u00e3o em cada linha, isso fica a cargo do<br \/>\nprogramador usar o \\n para indicar nova linha.<br \/>\nOBS.: Ao usar o modo &#8220;escrita&#8221; o arquivo original se j\u00e1 existir ser\u00e1 sobrescrito, ent\u00e3o muito cuidado ao us\u00e1-lo.<br \/>\nMas e se o objetivo for adicionar conte\u00fado no arquivo sem apagar o que j\u00e1 est\u00e1 l\u00e1.<br \/>\nBom \u00e9 poss\u00edvel ler guardar o conte\u00fado em uma vari\u00e1vel, concatenar e escrever.<br \/>\nPor\u00e9m existe um jeito mais f\u00e1cil, caso o que ser quer \u00e9 adicionar ao final do arquivo, veja:<\/p>\n<p>&nbsp;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- ADICIONANDO CONTE\u00daDO SEM SOBRESCREVER O ARQUIVO &#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<pre class=\"lang:prisma decode:true \">\/\/abra o arquivo em modo \"adicao\":\r\n\r\narq = es.abra( \"nome_arquivo.ext\" , \"adicao\" );\r\n\r\nse arq &lt;&gt; nulo entao\r\narq:escreva(\"\\n\\nOla mais uma linha adicionada\");\r\narq:feche(); \/\/fechando o objeto\r\nsenao\r\nimprima\"ERRO AO ABRIR O ARQUIVO\";\r\nfim \/\/fim se\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Caso o arquivo exista ser\u00e1 anexado o conte\u00fado sem apagar o que j\u00e1 est\u00e1 l\u00e1,<br \/>\nse n\u00e3o existir o arquivo ser\u00e1 criado e escrito normalmente o conte\u00fado.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- LEITURA E ESCRITA BIN\u00c1RIA \u00a0&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>&nbsp;<\/p>\n<p>A leitura e escrita binaria \u00e9 feita da mesma forma que os modos normais. Apenas troque para &#8220;leiturabin&#8221; e &#8220;escritabin&#8221;<br \/>\nLeitura:<\/p>\n<pre class=\"lang:prisma decode:true \">arq = es.abra(\"nome_arquivo.ext\" , \"leiturabin\");\r\n\r\nse arq &lt;&gt; nulo entao \/\/testando se arq for diferente de nulo entao leia o arquivo:\r\nconteudo_total = arq:leia(\"*t\");\r\narq:feche();\r\nsenao\r\nimprima\"falha ao tentar abrir o arquivo\";\r\nfim \/\/fim se arq &lt;&gt; ...\r\n\r\nse conteudo_total &lt;&gt; nulo entao imprima( conteudo_total) fim;\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Escrita:<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:prisma decode:true \">arq = es.abra( \"nome_arquivo.ext\" , \"escritabin\" );\r\n\r\nse arq &lt;&gt; nulo entao\r\narq:escreva( \"Oi esta \u00e9 a primeira Linha\" );\r\narq:escreva( \"\\npulando uma linha\\n\") ; \/\/necess\u00e1rio usar o ecape \\n para ir em outra linha;\r\narq:escreva(\"\\n\\n\\n\u00daltima linha\" );\r\narq:feche(); \/\/nao esque\u00e7a de fechar o objeto aberto.\r\nsenao\r\nimprima(\"Erro ao abrir o arquivo\"); \/\/caso arq seja nulo este comando ser\u00e1 executado.\r\nfim\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>A escrita bin\u00e1ria \u00e9 boa para escrever o resultado de uma string.compile ( ) (veja no manual b\u00e1sico biblioteca string)<\/p>\n<p>OBS.: Fluxo Bin\u00e1rio<\/p>\n<p>Um fluxo bin\u00e1rio \u00e9 composto por uma seq\u00fc\u00eancia de bytes lidos, sem tradu\u00e7\u00e3o, diretamente do dispositivo externo. N\u00e3o ocorre nenhuma tradu\u00e7\u00e3o e existe uma correspond\u00eancia um para um entre os dados do dispositivo e os que est\u00e3o no fluxo.<br \/>\nBom \u00e9 isso a\u00ed pessoal, j\u00e1 sabem o b\u00e1sico para leitura e escrita de arquivos, ok.<br \/>\nQualquer d\u00favida deixem nos coment\u00e1rios:<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Veja que \u00e9 muito simples abrir, ler ou escrever em um arquivo. Vamos usar a biblioteca padr\u00e3o de entrada e sa\u00edda &#8216;es&#8217;. Primeiro a leitura linha a linha (troque o nome do arquivo por um de seu computador); matriz = { }; i = 0; arquivo = es.abra( &#8220;caminho_nome_arquivo.extensao&#8221; , &#8220;leitura&#8221; ); \/\/abre em modo&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,7],"tags":[],"class_list":["post-960","post","type-post","status-publish","format-standard","hentry","category-modo_texto","category-prisma"],"_links":{"self":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/960","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/comments?post=960"}],"version-history":[{"count":5,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/960\/revisions"}],"predecessor-version":[{"id":965,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/960\/revisions\/965"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=960"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/categories?post=960"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/tags?post=960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}