Logo SatellaSoft



Escrever e ler em Arquivo TXT com PHP

Aprenda a fazer persistência utilizando arquivos texto e entenda sua importância.


Ícone homem Gunnar Correa
Ícone data de publicação 24/08/2015
Ícone quantidade de visualização 7,450
Ícone bandeira do Brasil Português

No inicio da Internet, não havia Banco de Dados para armazenas informações como usuários, vendas e qualquer outra informação, então para resolver este problema era utilizado arquivos de texto.

Após o surgimento do Banco de Dados por meados de 1960, a utilização de arquivos texto caiu rapidamente, pois fazer consultas em arquivo de texto é algo muito trabalhoso.

Atualmente existem vários Banco de Dados, como Oracle, MySQL, Firebird, mariaDB e outros, mas mesmo assim todas as linguagens dão suporte para escrita em TXT, sabe por qual motivo?  Imagine que o servidor de dados parou de funcionar, e é necessário registrar este bug em um Log, quem vai assumir esta enorme responsabilidade? Sim, um arquivo TXT!

Os TXT são utilizados para armazenar Logs de erro, pois não dependem de nenhum recurso extra a não ser do servidor e da própria linguagem, você pode utilizar um TXT em uma classe de conexão com o Banco de Dados, onde existem vários métodos para persistência, consulta e conexão, caso houver um erro e entrar no Catch, você pode guardar o erro em um arquivo de Texto.

O PHP assim como o C# por exemplo, permite fazer à escrita facilmente sem muitas linhas de código, mas antes de começar a escrever, devemos entender como isto de fato funciona.

Primeiro devemos abrir o arquivo, fazer a operação de escrita e leitura e por último fechar o arquivo. Enquanto o arquivo estiver aberto, nenhum outro processo poderá utiliza-lo até que nossa aplicação feche a “conexão” com ele.

 

Para gravar uma informação em um TXT, basta utilizar as funções:

fopen – Abre uma conexão com o arquivo.
fwrite – Escreve em um arquivo TXT.
fclose – Fecha a conexão com o arquivo TXT.

Veja a função abaixo que recebe um texto por parâmetro e faz a persistência.

Código 01:

<?php
//Criamos uma função que recebe um texto como parâmetro.
function gravar($texto){
	//Variável arquivo armazena o nome e extensão do arquivo.
	$arquivo = "meu_arquivo.txt";
	
	//Variável $fp armazena a conexão com o arquivo e o tipo de ação.
	$fp = fopen($arquivo, "a+");

	//Escreve no arquivo aberto.
	fwrite($fp, $texto);
	
	//Fecha o arquivo.
	fclose($fp);
}

gravar("Olá, mundo");

?>

No fopen você deve ter notado o uso do “a+”, este é um parâmetro que informa que tipo de ação deve ser tomado ao persistir uma informação, que são elas:

Valor

Descrição

r

Abre somente para leitura; coloca o ponteiro do arquivo no começo do arquivo.

r+

Abre para leitura e escrita; coloca o ponteiro do arquivo no começo do arquivo.

w

Abre somente para escrita; coloca o ponteiro do arquivo no começo do arquivo e reduz o comprimento do arquivo para zero. Se o arquivo não existir, tenta criá-lo.

w+

Abre para leitura e escrita; coloca o ponteiro do arquivo no começo do arquivo e reduz o comprimento do arquivo para zero. Se o arquivo não existir, tenta criá-lo.

a

Abre somente para escrita; coloca o ponteiro do arquivo no final do arquivo. Se o arquivo não existir, tenta criá-lo.

a+

Abre para leitura e escrita; coloca o ponteiro do arquivo no final do arquivo. Se o arquivo não existir, tenta criá-lo.

x

Cria e abre o arquivo somente para escrita; coloca o ponteiro no começo do arquivo. Se o arquivo já existir, a chamada a fopen() falhará, retornando FALSE e gerando um erro de nível E_WARNING. Se o arquivo não existir, tenta criá-lo. Isto é equivalente a especificar as flags O_EXCL|O_CREAT para a chamada de sistema open(2).

x+

Cria e abre o arquivo para leitura e escrita; coloca o ponteiro no começo do arquivo. Se o arquivo já existir, a chamada a fopen() falhará, retornando FALSE e gerando um erro de nível E_WARNING. Se o arquivo não existir, tenta criá-lo. Isto é equivalente a especificar as flags O_EXCL|O_CREAT para a chamada de sistema open(2).

Fonte: http://php.net/manual/pt_BR/function.fopen.php

Para fazer a leitura de um arquivo, não é nada complicado, utilizando a mesma função, deixamos de utilizar o fwrite() para usar o fread().

fread – Lê os bytes de um arquivo especificado.
Fonte: http://php.net/manual/pt_BR/function.fread.php

No código abaixo, fazemos a leitura de todo conteúdo do arquivo de texto. Note o uso do filesize(), esta função é responsável por ler o tamanho do arquivo.

Código 02:

<?php
//Criamos uma função que irá retornar o conteúdo do arquivo.
function ler(){
	//Variável arquivo armazena o nome e extensão do arquivo.
	$arquivo = "meu_arquivo.txt";
	
	//Variável $fp armazena a conexão com o arquivo e o tipo de ação.
	$fp = fopen($arquivo, "r");

	//Lê o conteúdo do arquivo aberto.
	$conteudo = fread($fp, filesize($arquivo));
	
	//Fecha o arquivo.
	fclose($fp);
	
	//retorna o conteúdo.
	return $conteudo;
}

echo ler();

?>

O algoritmo acima faz toda a leitura do arquivo, porém pode ser que ele não quebre uma linha, então utilize a função alternativa a seguir.

Código 03:

<?php
//Criamos uma função que irá retornar o conteúdo do arquivo.
function ler(){
	//Variável arquivo armazena o nome e extensão do arquivo.
	$arquivo = "meu_arquivo.txt";
	
	//Variável $fp armazena a conexão com o arquivo e o tipo de ação.
	$fp = fopen($arquivo, "r");

	//Lê o conteúdo do arquivo aberto.
	while (!feof ($fp)) {
		$valor = fgets($fp, 4096);

		echo $valor."<br>";
	}
	//Fecha o arquivo.
	fclose($fp);
	
	//retorna o conteúdo.
}

echo ler();

?>

Viu só como é fácil? Espero que tenham aprendido e saiba quando utilizar este recurso.

Se houver dúvidas, deixem nos comentários. Até a próxima!!!




Sobre o autor


Gunnar Correa

Nome: Gunnar Correa

Site: http://www.gunnarcorrea.com


Autodidata, graduado em Desenvolvimento Web e aluno de pós-graduação em Tecnologias na Educação em uma universidade no interior de São Paulo. Comecei meus estudos na área de programação quando ainda era criança, e atualmente estou estudando desenvolvimento de jogos.

Sou fundador do portal SatellaSoft dentre outros projetos. Nas minhas horas livres quando não estou com meus amigos, estou fazendo alguns cursos.


Comentários



É necessário estar autenticado para comentar, clique aqui para se registrar ou aqui para acessar a sua conta!