English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, você aprenderá como usar as funções do sistema de arquivos do PHP para criar, acessar (ou ler) e manipular arquivos dinamicamente.
Como o PHP é um linguagem de programação do lado do servidor, ele permite que você use arquivos e diretórios armazenados no servidor web. Neste tutorial, você aprenderá como usar as funções do sistema de arquivos do PHP para criar, acessar e operar arquivos no servidor web.
Para usar arquivos, primeiro você precisa abrir o arquivo. A função fopen() do PHP é usada para abrir arquivos. A sintaxe básica dessa função pode ser fornecida da seguinte maneira:
fopen(filename, mode)
O primeiro parâmetro passado para fopen() especifica o nome do arquivo a ser aberto, e o segundo parâmetro especifica o modo de abertura do arquivo. Por exemplo:
<?php $handle = fopen("data.txt", "r"); ?>Teste e veja‹/›
Você pode abrir um arquivo de uma das seguintes maneiras:
Modo | O que ele pode fazer |
---|---|
r | Abrir arquivo apenas para leitura |
r+ | Abrir arquivo para leitura e escrita |
w | Abrir arquivo apenas para escrita, e limpar o conteúdo do arquivo. Se o arquivo não existir, o PHP tentará criar ele. |
w+ | Abrir arquivo para leitura e escrita, e limpar o conteúdo do arquivo. Se o arquivo não existir, o PHP tentará criar ele. |
a | Adicionar. Abrir arquivo apenas para escrita. Preserve o conteúdo do arquivo escrevendo no final do arquivo. Se o arquivo não existir, o PHP tentará criar ele. |
a+ | Ler/Adicionar. Abrir arquivo para leitura e escrita. Preserve o conteúdo do arquivo escrevendo no final do arquivo. Se o arquivo não existir, o PHP tentará criar ele. |
x | Abrir arquivo apenas para escrita. Se o arquivo já existir, retornará False e gerará um erro. Se o arquivo não existir, o PHP tentará criar ele. |
x+ | Abrir arquivo para leitura e escrita; caso contrário, seu comportamento é o mesmo que "x". |
Se você tentar abrir um arquivo inexistente, o PHP gerará uma mensagem de aviso. Portanto, para evitar essas mensagens de erro, você deve usar a função PHP file_exists() para realizar uma simples verificação antes de tentar acessar algum arquivo ou diretório, verificando se o arquivo ou diretório existe.
<?php $file = "data.txt"; //Verificar se o arquivo existe if(file_exists($file)){ // Tente abrir esse arquivo $handle = fopen($file, "r"); } else { echo "ERROR: File does not exist."; } ?>Teste e veja‹/›
Dica:As operações de arquivo e diretório são propensas a erros. Portanto, é um bom hábito implementar algum tipo de verificação de erro, para que seu script possa lidar elegantemente com erros se ocorrerem. ConsulteManutenção de erros PHPtutorial.
Depois de usar o arquivo, é necessário fechá-lo. A função fclose() é usada para fechar arquivos, como mostrado no exemplo a seguir:
<?php $file = "data.txt"; //Verificar se o arquivo existe if(file_exists($file)){ //Abrindo o arquivo a ser lido $handle = fopen($file, "r") or die("ERROR: Cannot open the file."); /* Aqui está um exemplo de código a ser executado */ //Fechando o descritor de arquivo fclose($handle); } else { echo "ERROR: File does not exist."; } ?>Teste e veja‹/›
Atenção:Embora o PHP feche automaticamente todos os arquivos abertos ao final do script, é melhor fechar os arquivos após a execução de todas as operações.
Agora você já entendeu como abrir e fechar arquivos. No próximo capítulo, você aprenderá como ler dados de arquivos. O PHP tem várias funções para ler dados de arquivos. Você pode usar uma operação única para ler todo o arquivo de um caractere.
A função fread() pode ser usada para ler um número específico de caracteres de um arquivo. Você pode usar a sintaxe básica deste função.
fread(file handle, length in bytes)
Esta função aceita dois parâmetros-O descritor de arquivo e a quantidade de bytes a serem lidos. O exemplo a seguir lê do arquivo "data.txt".20 bytes, incluindo espaços. Supondo que o arquivo "data.txt" contenha um texto "The quick brown fox jumps over the lazy dog.".
<?php $file = "data.txt"; //Verificar se o arquivo existe if(file_exists($file)){ //Abrindo o arquivo a ser lido $handle = fopen($file, "r") or die("ERROR: Cannot open the file."); //Ler uma quantidade fixa de bytes do arquivo $content = fread($handle, "20); //Fechando o descritor do arquivo fclose($handle); //Exibir o conteúdo do arquivo echo $content; } else { echo "ERROR: File does not exist."; } ?>Teste e veja‹/›
O exemplo acima produzirá a seguinte saída:
The quick brown fox
A função fread() pode ser usada em conjunto com a função filesize(), para ler todo o arquivo de uma vez. A função filesize() tem a função de: retornar o tamanho do arquivo em bytes.
<?php $file = "data.txt"; //Verificar se o arquivo existe if(file_exists($file)){ //Abrindo o arquivo a ser lido $handle = fopen($file, "r") or die("ERROR: Cannot open the file."); //Lendo todo o arquivo $content = fread($handle, filesize($file)); //Fechando o descritor de arquivo fclose($handle); //Exibir o conteúdo do arquivo echo $content; } else { echo "ERROR: File does not exist."; } ?>Teste e veja‹/›
O exemplo acima produzirá a seguinte saída:
The quick brown fox jumps over the lazy dog.
A maneira mais simples de ler todo o conteúdo do arquivo no PHP é usar a função readfile(). Esta função permite que você leia o conteúdo do arquivo sem precisar abri-lo. O exemplo a seguir gerará a mesma saída que o exemplo acima:
<?php $file = "data.txt"; //Verificar se o arquivo existe if(file_exists($file)){ //Ler e exibir todo o arquivo readfile($file) or die("ERROR: Cannot open the file."); } else { echo "ERROR: File does not exist."; } ?>Teste e veja‹/›
O exemplo acima produzirá a seguinte saída:
The quick brown fox jumps over the lazy dog.
Outra maneira de ler todo o conteúdo do arquivo sem abri-lo é usar a função file_get_contents(). Esta função aceita o nome e o caminho do arquivo e lê todo o arquivo em uma variável de string. Abaixo está um exemplo:
<?php $file = "data.txt"; //Verificar se o arquivo existe if(file_exists($file)){ // Ler todo o arquivo em uma string $content = file_get_contents($file) or die("ERROR: Cannot open the file."); //Exibir o conteúdo do arquivo echo $content; } else { echo "ERROR: File does not exist."; } ?>Teste e veja‹/›
Outra maneira de ler todos os dados do arquivo usando a função file() do PHP. Sua função é semelhante à função file_get_content(), mas retorna o conteúdo do arquivo como um array de linhas, em vez de uma única string. Cada elemento do array correspondente a uma linha no arquivo.
Para lidar com os dados do arquivo, você precisa usarloop foreachPercorrer o array. Este é um exemplo que lê o arquivo para o array e, em seguida, exibe-o usando um loop:
<?php $file = "data.txt"; //Verificar se o arquivo existe if(file_exists($file)){ //Ler todo o arquivo em um array $arr = file($file) or die("ERROR: Cannot open the file."); foreach($arr as $line){ echo $line; } } else { echo "ERROR: File does not exist."; } ?>Teste e veja‹/›
Da mesma forma, você pode usar a função fwrite() do PHP para escrever dados em um arquivo ou adicionar a um arquivo existente. A sintaxe básica da função pode ser dada da seguinte forma:
fwrite(descritor de arquivo, string)
A função fwrite() aceita dois parâmetros — o descritor de arquivo e a string de dados a serem escritos, como nos seguintes exemplos:
<?php $file = "note.txt"; //A string de dados a ser escrita $data = "The quick brown fox jumps over the lazy dog."; //Abrir arquivo para escrita $handle = fopen($file, "w") or die("ERROR: Cannot open the file."); //Escrever dados no arquivo fwrite($handle, $data) or die("ERROR: Cannot write the file."); //Fechar o descritor de arquivo fclose($handle); echo "Os dados foram escritos no arquivo com sucesso."; ?>
No exemplo acima, se o arquivo "note.txt" não existir, o PHP criará automaticamente o arquivo e escreverá os dados. No entanto, se o arquivo "note.txt" já existir, o PHP apagará o conteúdo do arquivo (se houver) antes de escrever novos dados. Mas, se você quiser apenas adicionar ao arquivo e manter o conteúdo existente, use o exemplo acimaModo a em vez de w.
Outra maneira é usar a função file_put_contents(). É a funcionalidade correspondente da função file_get_contents(), que oferece uma maneira conveniente de escrever dados em um arquivo sem precisar abrir ele. A função aceita o nome e o caminho do arquivo e os dados a serem escritos. Este é um exemplo:
<?php $file = "note.txt"; //A string de dados a ser escrita $data = "The quick brown fox jumps over the lazy dog."; //Escrever dados no arquivo file_put_contents($file, $data) or die("ERROR: Cannot write the file."); echo "Os dados foram escritos no arquivo com sucesso."; ?>
Se o arquivo especificado no parâmetro do função file_put_contents() já existir, o PHP cobre-o por padrão. Para manter o conteúdo do arquivo, você pode passar o sinal especial FILE_APPEND como o terceiro parâmetro para a função file_put_contents(). Ele simplesmente adiciona novos dados ao arquivo, em vez de substituí-lo. Este é um exemplo:
<?php $file = "note.txt"; //A string de dados a ser escrita $data = "The quick brown fox jumps over the lazy dog."; //Escrever dados no arquivo file_put_contents($file, $data, FILE_APPEND) or die("ERROR: Cannot write the file."); echo "Os dados foram escritos no arquivo com sucesso."; ?>
Você pode usar a função rename() do PHP para renomear arquivos ou diretórios, conforme mostrado a seguir:
<?php $file = "file.txt"; //Verificar se o arquivo existe if(file_exists($file)){ //Tente renomear o arquivo if(rename($file, "newfile.txt")){ echo "O arquivo foi renomeado com sucesso."; } else { echo "Erro: não foi possível renomear o arquivo."; } } else { echo "Erro: arquivo não encontrado."; } ?>
Você pode usar a função unlink() do PHP para excluir arquivos ou diretórios, conforme mostrado a seguir:
<?php $file = "note.txt"; //Verificar se o arquivo existe if(file_exists($file)){ //Tente excluir o arquivo if(unlink($file)){ echo "O arquivo foi excluído com sucesso."; } else { echo "Erro: não foi possível excluir o arquivo."; } } else { echo "Erro: arquivo não encontrado."; } ?>
No próximo capítulo, vamos aprender sobrede diretório ou pastaMais informações.
A tabela a seguir resume algumas outras funções úteis do sistema de arquivos PHP, que podem ser usadas para ler e escrever arquivos dinamicamente.
Função | Descrição |
---|---|
fgetc() | Ler um caractere por vez. |
fgets() | Ler uma linha por vez. |
fgetcsv() | Ler uma linha com valores separados por vírgula. |
filetype() | Retorna o tipo do arquivo. |
feof() | Verificar se já se atingiu o final do arquivo. |
is_file() | Verificar se o arquivo é um arquivo comum. |
is_dir() | Verificar se o arquivo é um diretório. |
is_executable() | Verificar se o arquivo é executável. |
realpath() | Retorna o nome do caminho absoluto normalizado. |
rmdir() | Excluir um diretório vazio. |
Por favor, consulte a referência do sistema de arquivos PHP para obter outras funções úteis do sistema de arquivos PHP.