Trabalhar com arquivos e diretórios é uma tarefa comum em desenvolvimento web. PHP oferece várias funções para manipular pastas e diretórios, permitindo que você crie, renomeie, exclua e liste arquivos de forma eficaz. Neste post, vamos explorar as principais funções e técnicas para gerenciar pastas e diretórios em PHP!

Criando diretórios

Para criar um novo diretório em PHP, você pode usar a função mkdir(). Esta função aceita dois parâmetros: o nome do diretório e uma flag opcional para definir permissões.

Exemplo de criação de diretório

<?php
$nomeDiretorio = "novos_diretorios";

if (!is_dir($nomeDiretorio)) {
    mkdir($nomeDiretorio);
    echo "Diretório '$nomeDiretorio' criado com sucesso!";
} else {
    echo "O diretório '$nomeDiretorio' já existe.";
}
?>

Listando diretórios

Para listar os arquivos em um diretório, você pode usar a função scandir(), que retorna um array com os nomes dos arquivos e diretórios.

Exemplo de listagem de diretório

<?php
$diretorio = "nova_pasta";

if (is_dir($diretorio)) {
    $arquivos = scandir($diretorio);
    echo "Conteúdo do diretório '$diretorio':";
    foreach ($arquivos as $arquivo) {
        if ($arquivo != '.' && $arquivo != '..') {
            echo "\n - $arquivo";
        }
    }
} else {
    echo "O diretório '$diretorio' não existe.";
}
?>

Aqui, usamos um loop para exibir todos os arquivos e pastas, ignorando os diretórios especiais . e ...

Renomeando um diretório

Para renomear um diretório, você pode usar a função rename(). Basta passar o nome atual e o novo nome como argumentos.

Exemplo:

<?php
$diretorioAntigo = "nova_pasta";
$diretorioNovo = "pasta_atualizada";

if (is_dir($diretorioAntigo)) {
    rename($diretorioAntigo, $diretorioNovo);
    echo "Diretório renomeado para '$diretorioNovo' com sucesso!";
} else {
    echo "O diretório '$diretorioAntigo' não existe.";
}
?>

Excluindo um diretório

Para excluir um diretório vazio, você pode usar a função rmdir(). Para excluir um diretório que contém arquivos, você precisará removê-los primeiro.

Exemplo para diretório vazio:

<?php
$diretorio = "pasta_atualizada";

if (is_dir($diretorio)) {
    rmdir($diretorio);
    echo "Diretório '$diretorio' excluído com sucesso!";
} else {
    echo "O diretório '$diretorio' não existe.";
}
?>

Exemplo para diretório com arquivos:

Para excluir um diretório que não está vazio, você pode criar uma função recursiva:

<?php
function excluirDiretorio($dir) {
    if (!is_dir($dir)) {
        return;
    }
    
    $itens = scandir($dir);
    foreach ($itens as $item) {
        if ($item != '.' && $item != '..') {
            $caminho = "$dir/$item";
            if (is_dir($caminho)) {
                excluirDiretorio($caminho); // Chamada recursiva
            } else {
                unlink($caminho); // Remove arquivo
            }
        }
    }
    rmdir($dir); // Remove o diretório após excluir todos os itens
}

$diretorio = "pasta_atualizada";
excluirDiretorio($diretorio);
echo "Diretório '$diretorio' e seu conteúdo excluídos com sucesso!";
?>

Mudando o diretório atual

Para mudar o diretório atual do seu script PHP, você pode usar a função chdir(). Isso pode ser útil se você precisar executar operações em arquivos que estão em um diretório diferente.

Exemplo:

<?php
$novoDiretorio = "nova_pasta";

if (is_dir($novoDiretorio)) {
    chdir($novoDiretorio);
    echo "Diretório atual mudado para '$novoDiretorio'.";
} else {
    echo "O diretório '$novoDiretorio' não existe.";
}
?>

Outros exemplos práticos

Podemos criar, excluir, mover e renomear pastas sem grandes dificuldades:

 //Nome inicial do diretório
 $name = "images";

 if (!is_dir($name)) { //Se o diretório não existir
  mkdir($name); //cria o diretório
  echo "Diretório $name criado com sucesso";
 } else { Se existir...
  rmdir($name); //remove o diretório
 echo "Já existe o diretório: $name foi removido";
 }

Ler arquivos contidos em um determinado diretório:

 //Define o diretório que se deseja escanear. Neste caso "images"
 $images = scandir("images");

 //Array para armazenar as informações dos arquivos em um JSON
 $data = array();
 
/* Será retornado um array com os nomes dos arquivos encontrados dentro do diretório.
Na posição 0 armazena o diretório local ".", posição 1 o diretório anterior e os 
nomes dos arquivos encontrados nas demais posições do array. */ 

/* Para melhor manipular esse array, utilizamos um foreach para eliminarmos informações 
inúteis e trazermos outras informações dos arquivos, por exemplo: */ 

 foreach ($images as $img) {
  if(!in_array($img, array(".",".."))) { //Se não tiver . ou .. na posição atual do array 
  (informação inútil)
 
  $filename = "images" . DIRECTORY_SEPARATOR . $img; //Monta o caminho completo do arquivo
  
  //Obter informações úteis de um arquivo, como extensão, nome etc
  $info = pathinfo($filename);  
  $info["size"] = filesize($filename); //Obtém o tamanho do arquivo
  
  //Obtém a data da última modificação do arquivo
  $info["modified"] = date("d/m/Y H:i:s", filemtime($filename)); 
  
  //Gera uma URL para apontar para o arquivo
  $info["url"] = "http://localhost/DIR/".str_replace("\\", "/", $filename);  
  
  //Armazena no array $data as informações obtidas de $info
  array_push($data, $info);
 }
}
echo json_encode($data);//Mostra as informações armazenadas no JSON

Manipular pastas e diretórios com PHP é uma tarefa simples e poderosa, que pode ajudar muito na organização e gestão de arquivos em suas aplicações.

Com as funções que abordamos neste post, você pode facilmente criar, listar, renomear e excluir diretórios, além de mudar o diretório atual do seu script.

QUER APRENDER PHP ORIENTADO A OBJETOS OU APERFEIÇOAR O QUE JÁ SABE?

Então conheça o curso online que já ajudou milhares de pessoas a aprender a programar e desenvolver seus próprios projetos do ZERO e usando orientação a objetos de uma forma fácil de entender.

CLIQUE NA IMAGEM ABAIXO E SAIBA MAIS:

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags:

Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?

Não enviamos spam. Seu e-mail está 100% seguro!

Sobre o Autor

Bene Silva Júnior
Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *