Pessoal,
Boa noite.
Vou mostrar a vocês como listar arquivos de um diretório no PHP utilizando 2 funções e depois, de forma nativa. Vou criar uma classe com métodos estáticos para não precisar instanciar o objeto.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
<?php class clsArquivo { public static function pegaExtensao( $nomeArquivo ) { $posicao = strrpos( $nomeArquivo, "." ); $extensao = strtolower( substr( $nomeArquivo, $posicao + 1 ) ); return $extensao; } public static function listarArquivos( $strDiretorio, $vetExtensoes = null, $bolRecursivo = false, $bolOrdenacaoDecrescente = false ) { if ( is_dir( $strDiretorio ) ) { $vetor = array(); $strDiretorio .= ( substr( $strDiretorio, -1 ) != "/" ) ? "/" : null; $d = dir( $strDiretorio ); while ( false !== ( $arquivo = $d->read() ) ) { if ( is_dir( $strDiretorio . $arquivo ) ) { if ( $bolRecursivo && $arquivo != "." && $arquivo != ".." ) { $arquivo = $strDiretorio . $arquivo . "/"; $vetorResultante = self::listarArquivos( $arquivo, $vetExtensoes, true ); if ( is_array( $vetorResultante ) && count( $vetorResultante ) > 0 ) { $vetor = array_merge( $vetor, $vetorResultante ); } } } else { if ( is_array( $vetExtensoes ) ) { $ext = self::pegaExtensao( $arquivo ); if ( in_array( $ext, $vetExtensoes ) ) { $strArquivo = $strDiretorio . $arquivo; if ( substr( $strArquivo, 0, 2 ) == "./" ) { $strArquivo = substr( $strArquivo, 2 ); } if ( is_file( $strArquivo ) ) { $vetor[] = $strArquivo; } } } else { $strArquivo = $strDiretorio . $arquivo; if ( substr( $strArquivo, 0, 2 ) == "./" ) { $strArquivo = substr( $strArquivo, 2 ); } if ( is_file( $strArquivo ) ) { $vetor[] = $strArquivo; } } } } $d->close(); if ( count( $vetor ) > 0 ) { if ( $bolOrdenacaoDecrescente ) { rsort( $vetor ); } else { usort( $vetor, 'strnatcasecmp' ); } } return $vetor; } } } |
Modo de utilização:
1 2 3 4 5 6 7 8 9 10 11 12 |
//Carregando a nossa classe require("classes/clsArquivo.php"); //Definindo as extensões de arquivos que estamos procurando $extensoes = array("txt", "log", "php"); /* Executa a função e retorna um vetor com o caminho dos arquivos encontrados nas pastas e subpastas do diretório "C:\Diretorio\", que será associado à variável $arrArquivos */ $arrArquivos = clsArquivo::listarArquivos("C:\Diretorio\", $extensoes, true); //Exibindo os valores do vetor na tela var_dump($arrArquivos); |
O exemplo acima irá imprimir algo similar à:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
array 0 => string 'C:\Diretorio\index.php' (length=70) 1 => string 'C:\Diretorio\wp-activate.php' (length=76) 2 => string 'C:\Diretorio\wp-blog-header.php' (length=79) 3 => string 'C:\Diretorio\wp-comments-post.php' (length=81) 4 => string 'C:\Diretorio\wp-config-sample.php' (length=81) 5 => string 'C:\Diretorio\wp-cron.php' (length=72) 6 => string 'C:\Diretorio\wp-links-opml.php' (length=78) 7 => string 'C:\Diretorio\wp-load.php' (length=72) 8 => string 'C:\Diretorio\wp-login.php' (length=73) 9 => string 'C:\Diretorio\wp-mail.php' (length=72) 10 => string 'C:\Diretorio\wp-settings.php' (length=76) 11 => string 'C:\Diretorio\wp-signup.php' (length=74) 12 => string 'C:\Diretorio\wp-trackback.php' (length=77) 13 => string 'C:\Diretorio\xmlrpc.php' (length=71) |
Agora vamos ver utilizando a função nativa glob do PHP:
1 2 3 4 5 |
<?php foreach (glob("*.txt") as $arquivo) { echo "tamanho de $arquivo " . filesize($arquivo) . "\n"; } ?> |
O exemplo acima irá imprimir algo similar à:
tamanho de funclist.txt 44686
tamanho de funcsummary.txt 267625
tamanho de quickref.txt 137820
Para mais informações sobre a função glob, acesse http://www.php.net/manual/pt_BR/function.glob.php
É isso aí!!
1 Response
Canada Goose Coats Montreal
You know I love your blog!!!