Ícone do site Linha de Comando

PHP: Listando diretórios, subdiretórios, arquivos etc

Atualizado em 08/02/2017.


A partir da versão 5 do PHP pode-se utilizar um construtor muito útil para listar diretórios, subdiretórios, arquivos etc.

Este construtor chama-se “DirectoryIterator“.

/xampp
  / htdocs
    / sistema
      / fotos (diretório principal)
         / foto1.jpg
         / foto2.jpg
         / produtos (subdiretório)
              / produto1.jpg
              / produto2.jpg
         / albuns (subdiretório)
              / album1.jpg
              / album2.jpg

Veja como utilizá-lo:

isDot())
    {
        // listando somente os diretórios
        if  ( $file->isDir() )
        {
            // atribui o nome do diretório a variável
            $dirName = $file->getFilename();

            // listando somente o diretório permitido
            if( in_array($dirName, $diretoriosPermitidos)) {
                // subdiretórios
                $caminho = $file->getPathname();
                // chamada da função de recursividade
                recursivo($caminho, $dirName);
            }
        }

        // listando somente os arquivos do diretório
        if  ( $file->isFile() )
        {
            // atribui o nome do arquivo a variável
            $fileName = $file->getFilename();
            //
            echo "fotos: ".$fileName."
"; } } } function recursivo( $caminho, $dirName ){ global $dirName; $DI = new DirectoryIterator( $caminho ); foreach ($DI as $file){ if (!$file->isDot()) { if ( $file->isFile() ) { // $fileName = $file->getFilename(); // echo $dirName.": ".$fileName."
"; } } } } ?>

Detalhes:
DirectoryIterator::__construct — Constrói um novo iterador de diretório a partir de um caminho
DirectoryIterator::current — Retorna $this (necessário para a interface Iterator)
DirectoryIterator::getATime — Retorna a data de último acesso do arquivo
DirectoryIterator::getCTime — Retorna a data de modificação do inode do arquivo
DirectoryIterator::getFilename — Retorna o nome do arquivo do elemento atual do diretório
DirectoryIterator::getGroup — Retorna o grupo do arquivo
DirectoryIterator::getInode — Retorna o inode do arquivo
DirectoryIterator::getMTime — Retorna a data da última modificação do arquivo
DirectoryIterator::getOwner — Retorna o proprietário do arquivo
DirectoryIterator::getPath — Retorna o caminho do diretório
DirectoryIterator::getPathname — Retorna o caminho e o nome do arquivo atual do diretório
DirectoryIterator::getPerms — Retorna as permissões do arquivo
DirectoryIterator::getSize — Retorna o tamanho do arquivo
DirectoryIterator::getType — Retorna o tipo do arquivo
DirectoryIterator::isDir — Retorna true se o elemento atual é um diretório
DirectoryIterator::isDot — Retorna true se o elemento atual for ‘.’ ou ‘..’
DirectoryIterator::isExecutable — Retorna true se o arquivo for executável
DirectoryIterator::isFile — Retorna true se o elemento atual for um arquivo
DirectoryIterator::isLink — Retorna true se o elemento atual for um link simbólico
DirectoryIterator::isReadable — Retorna true se o arquivo pode ser lido
DirectoryIterator::isWritable — Retorna true se o arquivo pode ser modificado
DirectoryIterator::key — Retorna o elemento atual do diretório
DirectoryIterator::next — Avança para o próximo elemento
DirectoryIterator::rewind — Recomeça a iteração do diretório
DirectoryIterator::valid — Verifica se o diretório possui ou não mais elementos

Sair da versão mobile