Manipular Ficheiros
O primeiro comando que vou falar é o comando fopen
comando que serve para abrir o ficheiro.
Abrir um ficheiro
Para abrir um ficheiro, usa-se o comando fopen
. Este irá devolver um handler para o ficheiro, isto é, um objecto que represente um acesso ao ficheiro. A sua sintaxe é a seguinte:
fopen($nomeficheiro, $modoabertura)
O parâmetro $modoabretura
indica o tipo de operação a executar sobre o ficheiro após a sua abertura podendo ser um dos seguintes:
Modo de abertura | Explicação |
---|---|
r |
Abre o ficheiro para leitura e coloca o apontador no inicio |
r+ |
Abre o ficheiro para leitura e escrita e coloca o apontador no inicio do ficheiro |
w |
Abre o ficheiro para escrita e coloca o apontador no inicio do ficheiro ( cria o ficheiro se este não existir) |
w+ |
Abre o ficheiro para leitura e para escrita e coloca o apontador no inicio do ficheiro (cria o ficheiro se este não existir) |
a |
Abre o ficheiro escrita e coloca o apontador no fim do ficheiro (cria o ficheiro se este não existir) |
a+ |
Abre o ficheiro para leitura e para escrita e coloca o apontador no fim do ficheiro (cria o ficheiro se este não existir) |
Exemplo de abertura
// abrir o ficheiroa.txt exclusivamente para operações de leitura
$fa = fopen("ficheiroa.txt", "r");
// abrir o ficheirob.txt para escrita
$fb = fopen("ficheirob.txt", "w");
Uma vez aberto o ficheiro, é possível operar sobre ele, lendo ou escrevendo dados.
Ler conteúdos de um ficheiro de texto
Para ler ficheiros de texto, basta usar a função fread
para ler todo o ficheiro. A sua sintaxe é a seguinte:
string fread($handle, $limite)
O $handle
é o objecto que nos é devolvido pela função fopen
(daí a necessidade de abrir o ficheiro com esta função). O $limite
é o número de bytes que pretendemos ler do ficheiro de texto.
Exemplos de leitura de ficheiros
Assumindo que o ficheiroa.txt
tem o seguinte conteúdo:
carochinha lindinha
e bonitinha
- Ler os primeiros 3 bytes (caracteres) do ficheiro
Resultado:
$fa = fopen("ficheiroa.txt", "r"); // indicar o handler de abertura do ficheiro, e o limite pretendido echo fread($fa, 3);
car
- Ler todo o conteúdo do ficheiro:
Resultado:
$fa = fopen("ficheiroa.txt", "r"); // indicar o handler de abertura do ficheiro, e o limite pretendido echo fread($fa, filesize("ficheiroa.txt"));
carochinha lindinha e bonitinha
Escrever ficheiros de texto
Para escrever ficheiros de texto usa-se a função fwrite
, cuja sintaxe é:
string fread($handle, $texto)
Tal como no fread
, a variável $handle
irá receber o objecto criado com a abertura do ficheiro, e $texto
irá conter o texto a ser escrito no ficheiro.
Exemplos de escrita em ficheiros
Assumindo que o ficheirob.txt
tem o seguinte conteúdo:
O sapo toscas foi passear ao rio
- Acrescentar conteúdos ao ficheiro:
Obtemos:
// Ter em atenção que devemos abrir o ficheiro para escrita // mas colocando o apontador (onde começa a escrever) no fim do ficheiro // usa-se a opção "a" (append) $fb = fopen("ficheirob.txt", "a"); $novo = " e o macaco foi jogar hockey"; fwrite($fb, $novo);
O sapo toscas foi passear ao rio e o macaco foi jogar hockey
- Reescrever o conteúdo do ficheiro:
Conteúdo do ficheiro:
// ter o cuidado de abrir o ficheiro para escrita com "w" $fb = fopen("ficheirob.txt", "w"); $novo = "O macaco foi jogar hockey"; fwrite($fb, $novo);
O macaco foi jogar hockey
Exemplo com leitura e escrita
Neste exemplo final, pretende-se fazer um contador muito simples de visitas ao website. Iremos usar um ficheiro de texto para guardar o número de visitas totais, por isso o que pretendemos é, ao chegar um visitante ao nosso website, abrir o ficheiro, ler o número de visitas já registadas, acrescentar-lhe a nova visita e actualizar o valor.
<?php
// verificar se conseguimos aceder ao nosso contador
if (!$file = fopen("contador.txt", "r")) {
echo "O contador não conseguiu abrir o ficheiro";
}else{
// obter as visitas
$visitas = (int) fread($file, filesize("contador.txt") + 1);
$visitas++;
fclose($file);
// actualizar o numero de visitas no ficheiro
$file = fopen("contador.txt", "w");
fwrite($file, $visitas);
fclose ($file);
echo "Já recebemos $visitas visitas!";
}
?>