Abertura/Leitura/Fechamento de Arquivo PHP

Nesta seção, explicamos como abrir, ler e fechar arquivos no servidor.

Abrir Arquivo PHP - fopen()

A melhor maneira de abrir um arquivo é através da função fopen(). Esta função oferece mais opções do que a função readfile().

No curso, usaremos o arquivo de texto "webdictionary.txt":

AJAX = JavaScript e XML Assíncronos
CSS = Folhas de Estilo em Cascata
HTML = Linguagem de Marcação de Hipertexto
PHP = Processador de Hipertexto PHP
SQL = Linguagem de Consulta Estruturada
SVG = Gráficos Vetoriais Escaláveis
XML = Linguagem de Marcação Extensível (EXtensible Markup Language)

O primeiro parâmetro da função fopen() contém o nome do arquivo a ser aberto, o segundo parâmetro define o modo de abertura do arquivo. Se a função fopen() não puder abrir o arquivo especificado, o exemplo a seguir gerará uma mensagem:

Exemplo

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fread($myfile, filesize("webdictionary.txt"));
fclose($myfile);
?>

Exemplo de execução

Dica:A seguir, vamos aprender sobre as funções fread() e fclose().

O arquivo será aberto com um dos seguintes modos:

Modo Descrição
r Abre o arquivo para leitura exclusiva. O ponteiro de arquivo começa no início do arquivo.
w Abre o arquivo para escrita exclusiva. O conteúdo do arquivo será excluído ou um novo arquivo será criado, se ele não existir. O ponteiro de arquivo começa no início do arquivo.
a Abre o arquivo para escrita exclusiva. Os dados existentes no arquivo serão mantidos. O ponteiro de arquivo começa no final do arquivo. Cria um novo arquivo, se ele não existir.
x Cria um novo arquivo para escrita exclusiva. Retorna FALSE e erro, se o arquivo já existir.
r+ Abre o arquivo para leitura/escrita, com o ponteiro de arquivo começando no início do arquivo.
w+ Abre o arquivo para leitura/escrita. O conteúdo do arquivo será excluído ou um novo arquivo será criado, se ele não existir. O ponteiro de arquivo começa no início do arquivo.
a+ Abre o arquivo para leitura/escrita. Os dados existentes no arquivo serão mantidos. O ponteiro de arquivo começa no final do arquivo. Cria um novo arquivo, se ele não existir.
x+ Cria um novo arquivo para leitura/escrita. Retorna FALSE e erro, se o arquivo já existir.

PHP lê arquivo - fread()

A função fread() lê o arquivo aberto.

O primeiro parâmetro da função fread() contém o nome do arquivo a ser lido, o segundo parâmetro define o número máximo de bytes a serem lidos.

O seguinte código PHP lê o arquivo "webdictionary.txt" até o final:

fread($myfile, filesize("webdictionary.txt"));

PHP fecha arquivo - fclose()

A função fclose() é usada para fechar arquivos abertos.

Observação:Fechar todos os arquivos após usá-los é um bom hábito de programação. Você não deseja que arquivos abertos consumam recursos do seu servidor.

A função fclose() requer o nome do arquivo a ser fechado (ou uma variável que contém o nome do arquivo):

<?php
$myfile = fopen("webdictionary.txt", "r");
// algum código a ser executado...
fclose($myfile);
?>

PHP lê uma linha de arquivo - fgets()

A função fgets() é usada para ler uma linha de um arquivo.

A seguinte saída imprime a primeira linha do arquivo "webdictionary.txt":

Exemplo

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fgets($myfile);
fclose($myfile);
?>

Exemplo de execução

Observação:Após a chamada da função fgets(), o ponteiro do arquivo se move para a próxima linha.

Verificação de End-Of-File PHP - feof()

A função feof() verifica se já atingiu o "final do arquivo" (EOF).

feof() é muito útil para percorrer dados de comprimento desconhecido.

O exemplo a seguir lê o arquivo "webdictionary.txt" linha a linha até o final do arquivo:

Exemplo

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Output de linha única até o final do arquivo
while(!feof($myfile)) {
  echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>

Exemplo de execução

Leitura de caractere único PHP - fgetc()

A função fgetc() é usada para ler um caractere único do arquivo.

O exemplo a seguir lê o arquivo "webdictionary.txt" caracter a caracter até o final do arquivo:

Exemplo

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Output de caractere único até o final do arquivo
while(!feof($myfile)) {
  echo fgetc($myfile);
}
fclose($myfile);
?>

Exemplo de execução

Observação:Após a chamada da função fgetc(), o ponteiro do arquivo se move para o próximo caractere.

Manual de referência Filesystem PHP

Para obter o manual de referência completo do Filesystem PHP, acesse o que é fornecido pelo CodeW3C.com Manual de referência Filesystem PHP.