Pode fazer o que quiser com isso | // | | // | 12-02-2004 Silvano (gosh) | // +---------------------------------------+ set_time_limit(0); if (PHP_OS == "WIN32") { define(BARRA, "\\"); } else { define(BARRA, "/"); } class ArvoreDiretorios { function executa($diretorio) { $array_dados = ArvoreDiretorios::lerDiretorio($diretorio); ArvoreDiretorios::mostraArvore($array_dados, 0); } /** * Esta função lê o diretório passado e pega o espaço total * ocupado pelos arquivos e diretórios, retornando tudo em um * array * * @author Silvano Girardi Jr. */ function lerDiretorio($nome) { $retorno = array(); if (is_dir($nome)) { $handle = @opendir($nome); if (!$handle) { return "Não foi possível abrir o diretório"; } $tamanho = 0; while($filename = readdir($handle)) { if ($filename != "." && $filename != "..") { $temp = ArvoreDiretorios::lerDiretorio($nome.BARRA.$filename); if (is_array($temp)) { if (!is_array($retorno[$nome])) { $retorno[$nome] = array(); } $retorno[$nome] = array_merge($retorno[$nome], $temp); } else { $tamanho += $temp; } } } closedir($handle); if (!is_array($retorno[$nome])) { $retorno[$nome] = array(); } array_push($retorno[$nome], number_format($tamanho, 2, ".", ",")); return $retorno; } else { return (filesize(getcwd().BARRA.$nome)/1024); } } /** * Esta função é uma modificação da versão apresentada nos comentários * da função dir() no site php.net/dir por 'de\kibo\niels' */ function mostraArvore ($array_dados, $profundidade) { foreach ($array_dados AS $nome => $tamanho) { if (is_array($tamanho)) { for ($i = 0; $i < $profundidade - 1; $i++) { echo "| "; } echo "+-"; echo "".$nome." (".$array_dados[$nome][0]." Kb)\n"; $profundidade++; ArvoreDiretorios::mostraArvore($tamanho, $profundidade); $profundidade--; } } } } echo "
";

# exemplo: 
ArvoreDiretorios::executa(".");

?>