Trabalhando com o sistema de arquivos em PHP: do básico aos projetos reais
\n\nTrabalhar com o sistema de arquivos é uma das tarefas principais de qualquer desenvolvedor web. Em PHP, existe um conjunto poderoso de funções integradas que permitem criar, ler, editar e excluir arquivos, além de gerenciar diretórios. Neste artigo, vamos analisar exemplos práticos que ajudarão você a dominar o trabalho com arquivos em PHP e aplicar esse conhecimento em projetos reais.
\n\nIndependentemente de você estar criando um sistema de logging, um uploader de arquivos ou apenas salvando dados de usuários, entender os fundamentos do sistema de arquivos em PHP é uma habilidade obrigatória. Vamos para a prática.
\n\nFunções principais para trabalhar com arquivos
\n\nO PHP oferece várias maneiras de interagir com arquivos. As mais populares são o uso de fopen, fwrite, fread e as funções de alto nível file_get_contents e file_put_contents. Vamos analisá-las com exemplos.
Criação e escrita em arquivo
\n\nPara criar um arquivo e escrever nele, use a função fopen com o modo 'w' (escrita com limpeza) ou 'a' (adição ao final).
<?php\n$filename = 'log.txt';\n$file = fopen($filename, 'w');\n\nif ($file) {\n fwrite($file, "Linha 1: Escrevendo no arquivo\\n");\n fwrite($file, "Linha 2: Mais uma escrita\\n");\n fclose($file);\n echo "Arquivo criado e escrito com sucesso.";\n} else {\n echo "Erro ao abrir o arquivo.";\n}\n?>\n\nSe precisar escrever dados rapidamente sem gerenciar o ponteiro, use file_put_contents:
<?php\n$data = "Novo conteúdo para o arquivo.\\nSegunda linha.";\nfile_put_contents('data.txt', $data);\necho "Dados escritos.";\n?>\n\nLeitura de arquivo
\n\nPara ler um arquivo linha por linha, use fgets em um loop:
<?php\n$file = fopen('log.txt', 'r');\nif ($file) {\n while (($line = fgets($file)) !== false) {\n echo $line . "<br>";\n }\n fclose($file);\n}\n?>\n\nAlternativa — file_get_contents para ler todo o conteúdo em uma string:
<?php\n$content = file_get_contents('log.txt');\necho nl2br($content);\n?>\n\nVerificação de existência e propriedades de arquivos
\n\nAntes de trabalhar com um arquivo, é importante garantir que ele existe e está acessível para leitura ou escrita. O PHP fornece as funções file_exists, is_readable, is_writable e filesize.
Exemplo de verificação de arquivo
\n\n<?php\n$file = 'config.php';\n\nif (file_exists($file)) {\n echo "Arquivo existe.<br>";\n \n if (is_readable($file)) {\n echo "Arquivo está disponível para leitura.<br>";\n echo "Tamanho do arquivo: " . filesize($file) . " bytes.";\n } else {\n echo "Arquivo existe, mas não está disponível para leitura.";\n }\n} else {\n echo "Arquivo não encontrado.";\n}\n?>\n\nVerificação do tipo de arquivo
\n\nA função filetype retorna o tipo do arquivo: 'file', 'dir', 'link' e outros.
<?php\n$path = 'uploads';\nif (file_exists($path)) {\n echo "Tipo: " . filetype($path); // exibirá 'dir' se for uma pasta\n}\n?>\n\nGerenciamento de diretórios
\n\nTrabalhar com pastas em PHP não é menos importante. Você pode criar, excluir e escanear diretórios.
\n\nCriação e exclusão de pastas
\n\n<?php\n// Criando uma pasta\nif (!file_exists('backup')) {\n mkdir('backup', 0777, true); // terceiro parâmetro true — criação recursiva\n echo "Pasta criada.";\n}\n\n// Excluindo uma pasta vazia\nif (file_exists('temp')) {\n rmdir('temp');\n echo "Pasta excluída.";\n}\n?>\n\nEscaneando o conteúdo de um diretório
\n\nA função scandir retorna um array de todos os arquivos e pastas