Listagem de todos os arquivos do diretório com DirectoryIterator no PHP

Postado por: Flávio Rodrigues em

Se não houver um motivo muito claro pra usar opendir, readdir e closedir (não consigo pensar em mais nenhum), a forma mais prática de listar o conteúdo de um diretório é com DirectoryIterator:

$iterator = new DirectoryIterator('/var/www');
foreach ( $iterator as $entry ) {
echo $entry->getFilename(), "\n";
}

Se for necessário listar os arquivos recursivamente, percorrendo todos os subdiretórios, é só usar o RecursiveDirectoryIterator junto com o RecursiveIteratorIterator:

$iterator = new RecursiveDirectoryIterator('/var/www');
$recursiveIterator = new RecursiveIteratorIterator($iterator);

foreach ( $recursiveIterator as $entry ) {
echo $entry->getFilename(), "\n";
}

Com um pouco de criatividade, é possível estender essas classes com qualquer lógica facilmente, como por exemplo, para montar uma árvore com a estrutura dos diretórios.

Posts Relacionados

Confira também outros artigos interessantes postados aqui no blog.

Gostou desse post?

Assine o nosso Feed RSS, siga-nos no Twitter, ou simplesmente nos recomende a seus amigos!

Sobre Flávio Rodrigues

Flávio Rodrigues é programador pleno, tecnólogo em Sistemas de Informação pelo Curso e Colégio Nova Era em Joinville - SC

Central Server

11 Responses to “Listagem de todos os arquivos do diretório com DirectoryIterator no PHP”

  1. Fabio disse:

    Belo post, começou muito bem, programo a algum tempo em PHP e não conhecia esta Classe..

  2. Vitor Leonel disse:

    Eu tenho uma aplicação PHP que está usando “opendir, readdir e closedir” não sabia da existência dessa classe.

    Ela está disponível a partir de qual Versão do PHP?

    Vou substituir o que eu tenho na minha aplicação por essa se funcionar direitinho na minha versão do PHP…

  3. Então Vitor, se eu não me engano, está disponível apenas a partir da versão 5.0

    Mas se sua aplicação ainda roda na versão 4, ta na hora de atualizar amigão =)

  4. Flávio, já que o negócio é mão na massa, já pode dar uma ajuda em sistemas que são utilizados na internet. EX: Orkut, Youtube, …

    Exemplificar algumas funções usadas. Muitas dessas funções usadas nesses sites, nós precisamos utilizar hoje em dia.
    Exemplo: Sistema de recado. Muito fácil de se fazer em php e tem pessoas que não sabem ainda. Acho que esse tipo de conteúdo seria muito interessante!

    O trabalho com sessões seria também um ótimo artigo. Aguardo os outros posts e espero ajudar no que puder!

    By Alexandre

  5. Samir disse:

    Flábio, muito bom divulgar esse recurso…

    Só acho que vale a pena citar também que essa função faz parte da SPL – Standard PHP Library.

    Mais sobre a SPL aqui http://br.php.net/manual/pt_BR/book.spl.php e aqui http://www.php.net/~helly/php/ext/spl/

    []s

  6. Fala Samir, primeiro que é Flávio e nao Flávio! hehehe =P

    Bom, muito bacana sua contribuição, mas hoje, acredito que 90% (to chutando) dos servidores de hospedagem já devem ter migrado para PHP 5.3.0 então em 90% dos casos a função já será nativa do servidor.

    Mas de qualquer forma, realmente vale a pena ler um pouquinho mais sobre SPL!!

  7. Samir disse:

    ops, Flávio, sorry my typo =)

    []s

  8. Diogo disse:

    Esse DirectoryIterator, e acho que todas as classes da SPL, é uma mão na roda mesmo!

  9. Ja tinha ate passado a vista sobre a class mais nunca tinha utilizado ela agora com o post comecei a usar e facilita muito mesmo vlw pelo post ajudo bastante

  10. Daniel Ribeiro disse:

    Legal hein! E desempenho, li algumas coisas sobre a SPL e todos dizem que ela ganha em desempenho, tem alguma informação sobre isso?

  11. mArCiOnE jR disse:

    Olá Flavio, Parabéns pelo POST.
    Como seria pra exibir uma quantidade limitada de arquivos?

Leave a Reply