English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico PHP

Tutorial Avançado PHP

PHP & MySQL

Manual de Referência PHP

Arquivo (File) PHP

Neste tutorial, você aprenderá como usar as funções do sistema de arquivos do PHP para criar, acessar (ou ler) e manipular arquivos dinamicamente.

Tratar arquivos usando PHP

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.

Abrir arquivos usando a função fopen() do PHP

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:

ModoO que ele pode fazer
rAbrir arquivo apenas para leitura
r+Abrir arquivo para leitura e escrita
wAbrir 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.
aAdicionar. 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.
xAbrir 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.

Usar a função fclose() do PHP para fechar arquivos

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.

Usar a função fread() do PHP para ler arquivos

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.

Ler um número fixo de caracteres

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

Ler todo o conteúdo do arquivo

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‹/›

Escrever arquivo usando a função fwrite() do PHP

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.";
?>

Renomear arquivo usando a função rename() do PHP

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.";
}
?>

Excluir arquivo usando a função unlink() do PHP

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.

Funções do sistema de arquivos PHP

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.