Trabalhando com o sistema de arquivos em PHP: funções e exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com o sistema de arquivos em PHP: funções principais e exemplos



Trabalhar com o sistema de arquivos é uma das tarefas-chave do desenvolvimento web. O PHP fornece um conjunto poderoso e flexível de funções para criar, ler, escrever, excluir arquivos e pastas, bem como para gerenciar permissões de acesso. Neste artigo, vamos analisar as principais capacidades do PHP para trabalhar com o sistema de arquivos, fornecer exemplos práticos e considerar erros típicos.



1. Leitura de arquivos em PHP



O PHP suporta várias maneiras de ler dados de arquivos. A escolha do método depende do tamanho do arquivo e do nível de controle necessário.



1.1. Função file_get_contents()

A maneira mais simples de ler um arquivo inteiro em uma string é usar file_get_contents(). Esta função é adequada para arquivos pequenos (configurações, templates).



<?php// Lendo o arquivo inteiro em uma string$content = file_get_contents('data.txt');if ($content !== false) {    echo "Conteúdo do arquivo: " . htmlspecialchars($content);} else {    echo "Erro ao ler o arquivo";}?>


1.2. Função file()

Se você precisa obter o conteúdo do arquivo como um array de strings (uma linha por elemento), use file().



<?php$lines = file('log.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);foreach ($lines as $lineNum => $line) {    echo "Linha " . ($lineNum + 1) . ": " . htmlspecialchars($line) . "<br>";}?>


1.3. Leitura linha por linha com fopen() + fgets()

Para arquivos grandes (por exemplo, logs), é melhor usar leitura em fluxo para não manter o arquivo inteiro na memória.



<?php$handle = fopen('large_file.csv', 'r');if ($handle) {    while (($buffer = fgets($handle, 4096)) !== false) {        echo $buffer . "<br>";    }    fclose($handle);} else {    echo "Não foi possível abrir o arquivo";}?>


2. Escrita de dados em arquivos



A escrita também pode ser realizada de diferentes maneiras. A principal diferença é sobrescrever o arquivo ou adicionar ao final.



2.1. Função file_put_contents()

Uma maneira rápida de escrever uma string em um arquivo. Se o arquivo não existir, ele será criado. Por padrão, o arquivo é sobrescrito.



<?php$data = "Nova entrada: " . date('Y-m-d H:i:s') . "";// Sobrescrever o arquivofile_put_contents('log.txt', $data);// Adicionar ao final (flag FILE_APPEND)file_put_contents('log.txt', $data, FILE_APPEND);?>


2.2. Escrita manual através de fopen() + fwrite()

Para controle fino (por exemplo, bloqueio de arquivo), use o par fopen() / fwrite().



<?php$filename = 'counter.txt';$handle = fopen($filename, 'c+'); // 'c+' — cria o arquivo se ele não existirif (flock($handle, LOCK_EX)) { // bloqueio exclusivo    $current = (int) fread($handle, filesize($filename) ?: 1);    $current++;    ftruncate($handle, 0); // limpa o arquivo    rewind($handle);    fwrite($handle, $current);    flock($handle, LOCK_UN); // libera o bloqueio}fclose($handle);echo "Contador: $current";?>


3. Trabalho com diretórios



O PHP permite não apenas gerenciar arquivos, mas também criar, excluir e visualizar pastas.



3.1. Criação de pastas (mkdir)

<?php// Criar uma pastaif (!is_dir('uploads')) {    mkdir('uploads', 0755);}// Criação recursiva de pastas aninhadas (PHP 5.4+)mkdir('images/2024/12', 0755, true);?>


3.2. Exclusão de pastas (rmdir)

rmdir() exclui apenas uma pasta vazia. Para excluir uma pasta com todo o seu conteúdo, é necessária uma função recursiva.



<?phpfunction deleteDirectory($dir) {    if (!file_exists($dir)) {        return true;    }    if (!is_dir($dir)) {        return unlink($dir);    }    $items = array_diff(scandir($dir), ['.', '..']);    foreach ($items as $item) {                

Blogs

Book Recommendations