Blog EspecializaTi
Carlos Ferreira Por: Carlos Ferreira Comentar

Principais Funções Para Manipulação de Arquivos do PHP

Principais Funções Manipulação de Arquivos do PHP 2

O PHP é uma linguagem de programação muito rica de recursos, e estes recursos ajudam muito no desenvolvimento de nossas aplicações com a linguagem.

Neste tutorial vou apresentar as principais funções para manipular arquivos com o PHP.

 
 

Criar Arquivos com PHP

A função touch() permite criar arquivos (caso ainda não existam), a utilização da função é muito simples, basta simplesmente passar um parâmetro com o nome do arquivo que deseja criar e a função touch() vai se virar e criar para você, essa função sempre devolve true em caso de sucesso ao criar o arquivo e false em caso de falha ao criar o arquivo.

Veja um exemplo, onde vamos criar um arquivo chamado teste.txt:

touch('teste.txt'); // Resultado: vai criar um arquivo (caso não exista) chamado teste.txt

 

NOTA: Extensões de arquivos não influência em nada, tanto faz para o PHP se a extensão é .txt .log ou .qualquercoisa

 
 

Verificar se um Arquivo existe

Antes de aplicação alguma ação em um determinado arquivo é importante verificar se este arquivo existe, e para isso temos a função file_exists() que retorna true caso um arquivo existe, e false em caso contrário.

Neste exemplo vamos verificar se o arquivo teste.txt existe:

if (file_exists('teste.txt'))
	echo 'O Arquivo existe';
else
	echo 'O arquivo não existe';

Se o arquivo estiver em um diretório, precisa especificar o caminho:

file_exists('path/filename.txt')

Se tiver em um nível acima do diretório atual, precisa navegar até este diretório:

file_exists('../filename.txt')

 
 

Renomear um Arquivo com PHP

Outra função muito interessante é a rename(), essa função permitir renomear o nome de um arquivo, nome e/ou extensão.

Veja um exemplo, vamos pegar o arquivo teste.txt e renomear para test.log

rename('teste.txt', 'test.log'); // Arquivo teste.txt => test.log

 
 

Copiar Arquivos com PHP

O PHP permite copiar um arquivo de um lugar para outro, seja para o mesmo nível de diretório ou qualquer outro diretório que você desejar copiar o arquivo, para isso podemos usar a função copy().

Neste exemplo vamos copiar o arquivo test.log para test2.log, no final temos dois arquivos:

copy('test.log', 'test2.log');

Se tiver que copiar o arquivo para um diretório chamado por exemplo “uploads”, pode fazer desta forma:

copy('test.log', 'uploads/test2.log');

 
 

Deletar Arquivos com PHP

E claro, não poderia faltar o recurso para deletar um arquivo. Para isso o PHP dispõe da função unlink().

Neste exemplo vamos deletar o arquivo test2.log

unlink('test2.log');

Uma dica interessante, antes de aplicar as funções é verificar se o arquivo realmente existe, para evitar erros, veja o exemplo completo:

if (file_exists('test2.log'))
	unlink('test2.log');

 
 

A função file_put_contents() permite escrever conteúdos em arquivos, mas, essa função possui uma caracteristica muito importante, ela limpa o conteúdo que já existia no arquivo e insere um novo, veja um exemplo:

file_put_contents('test.log', 'Alguma coisa no arquivo');

Se já tinha algum conteúdo no arquivo test.log ele será apagado e será sobreescrito por “Alguma coisa no arquivo

 
 

Ler o conteúdo de um arquivo com PHP

A função file_get_contents() permite ler todo o conteúdo de um arquivo, de uma única vez, essa função simplesmente retorna uma String com o todo o conteúdo do arquivo, veja um exemplo:

file_get_contents('test.log');

 
 

Escrever logs em arquivos com PHP

Agora vamos fazer um exemplo real, onde vamos fazer uma manipulação de arquivos em um formato mais profissional. Neste exemplo vamos combinar as funções fopen(), fclose() e também a função fwrite().

A função fopen() abre um arquivo, para que alguma coisa seja feito com ele, seja escrever ou ler.

A função fclose() apenas fecha o arquivo aberto, ela é muito importante para liberar recursos da memória, ou seja, deixar a aplicação menos pesada.

A função fwrite() serve para escrever em um arquivo aberto.

Neste exemplo vamos criar um arquivo chamado especializati.log e escrever uma linha com o conteúdo “test log” + data atual

// Abre o arquivo especializati.log, caso não exista o arquivo ele será criado, por causa da opção "a+"
$file = fopen('especializati.log', 'a+');

// Escreve no arquivo com a data atual
$text = 'test log ' . date('Y-m-d H:i:s');
fwrite($file, $text);

// Fecha o arquivo aberto
fclose($file);

O segundo parâmetro da função fopen(prm1, prm2) é muito importante, pois neste segundo parâmetro é definido o modo como o arquivo será aberto, existem diversas opções disponíveis. A opção “a+” abre o arquivo para leitura e escrita, coloca o ponteiro no final do arquivo, e caso o arquivo ainda não exista o cria.

Se quiser criar uma função para centralizar essa lógica de registro de logs, pode fazer algo assim:

function registerLog($nameFileLog, $log)
{
	$text = $log . date('Y-m-d H:i:s');

	$file = fopen($nameFileLog, 'a+');
	fwrite($file, $text);
	fclose($file);
}
// Para registrar o log, basta fazer assim:
registerLog('especializati.log', 'test log');

 
 

Ler logs de arquivos com PHP

Agora que já criamos a lógica para escrever logs, podemos fazer a leitura destes logs.

A função fgets() lê uma certa quantidade de caracteres de um arquivo.

Normalmente utilizada assim:

$file = fopen('especializati.log', 'a+');
echo fgets($file, 4096);
fclose($file);

Neste caso a função fgets() lê a primeira linha do arquivo especializati.log, o segundo parâmetro a quantidade de informações que vai ler, o valor 4096 corresponde a primeira linha.

Mas, este arquivo tem várias (ou pode ter), como fazer para ler todas as linhas, podemos combinar a função feof() que percorre todas as linhas do arquivo, até chegar no final.

Se fizer isso, vai percorrer todas as linhas do arquivo:

$file = fopen('especializati.log', 'a+');
while (!feof($file)) {
    echo 'Lendo o arquivo... <br>';
}
fclose($file);

Neste exemplo, se o arquivo especializati.log conter 100 linhas o loop while vai percorrer 100 vezes.

Agora que conhecemos a função fgets() e a função feof() podemos combina-las para percorrer todas as linhas do arquivo exibir o resultado linha por linha, veja o exemplo:

$file = fopen('especializati.log', 'a+');
while (!feof($file)) {
    echo fgets($file, 4096) . '<br>';
}
fclose($file);

Neste exemplo vai percorrer todas as linhas do arquivo especializati.log e exibir todo o conteúdo, uma linha por vez.

Inclusive, se quiser deixar o exemplo mais complexo, pode pegar a String retorna de fgets($file, 4096) e aplicar alguma ação.

Vamos supor que cada linha tenha algo parecido com isso “Carlos Ferreira;[email protected];Web Developer

Podemos combinar com outras funções do PHP e deixar o resultado melhor, veja o exemplo final:

// Abre o arquivo
$file = fopen('especializati.log', 'a+');

// Percorre todas as linhas do arquivo
while (!feof($file)) {
	// Pega o resultado da linha atual
    $result = fgets($file, 4096);

    // Separa as informações do usuário pelo ";"
    $details = explode(';', $result);

    // Cria variáveis com as informações
    $name 	= $details[0];
    $email 	= $details[1];
    $work 	= $details[2];

    // Imprime as informações do usuário
    echo "O {$name} trabalha com {$work} e o contato é {$email} <br>";
}

// Fecha o arquivo aberto
fclose($file);

 

Espero que tenha gostado deste tutorial, e se tiver alguma dica de algo que deseja aprender só deixar aquele comentário.

 

Abraços []’s

 

Carlos Ferreira

Sobre o Autor:

Carlos Ferreira

Carlos Ferreira é Analista de Sistemas Experiente, Empreendedor, Fundador da empresa EspecializaTi. Certificações: Comptia Linux +, LPI, Novell Certification.

Todos os direitos reservados © 2018 - EspecializaTi. É proibida a reprodução total ou parcial deste conteúdo.