Jump to content


Photo

Contar Arquivos De Diretorios E Sub-diretorios


  • Faça o login para participar
6 replies to this topic

#1 VultoBR

VultoBR

    Novato no fórum

  • Usuários
  • 8 posts
  • Sexo:Não informado

Posted 24/05/2007, 20:52

Olá tudo bem ? Eu estou tetando fazer uma contagem de total de arquivos de uma pasta, mas esta pasta contem subpastas também. Consigo fazer a contagem de 1 pasta somente, mas nao estou consigo fazer a contagem total, alguém poderia me ajudar? Tentei procurar aqui no forum e na web algum tudo e nao consegui, se alguem souber ficaria muito grato. =)



Desde já agradeco ^^
www.sharingan.com.br

#2 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 25/05/2007, 02:37

PHP 4 ou 5? :rolleyes:

Independente da resposta, confira abaixo as duas formas adequadas para cada situação:

PHP 4

<?php

set_time_limit(0);

class DirSize
{
	var $_files = 0;

	function DirSize($path, $recursively = false)
	{
		if (!is_dir($path)) {
			throw new Exception('Invalid directory path!');
		}

		$this->_scan($path, $recursively);
	}

	function _scan($path, $recursively)
	{
		$handle = opendir($path);

		while (false !== ($filename = readdir($handle))) {
			$filename = "$path/$filename";
			$basename = basename($filename);

			if (is_dir($filename)) {
				if ($basename != '.' && $basename != '..' && $recursively === true) {
					$this->_scan($filename, true);
				}
			} else {
				$this->_files++;
			}
		}

		closedir($handle);
	}

	function getFileCount()
	{
		return $this->_files;
	}
}

$DirSize = new DirSize('.', true);

print $DirSize->getFileCount();

?>

PHP 5

<?php

set_time_limit(0);

class DirSize
{
	private $_files = 0;

	public function __construct($path, $recursively = false)
	{
		if (!is_dir($path)) {
			throw new Exception('Invalid directory path!');
		}

		$this->_scan($path, $recursively);
	}

	private function _scan($path, $recursively)
	{
		$handle = new RecursiveDirectoryIterator($path);

		while ($handle->valid()) {
			if ($handle->isDir()) {
				if (!$handle->isDot() && $recursively === true) {
					$this->_scan($handle->getPathName(), true);
				}
			} else {
				$this->_files++;
			}

			$handle->next();
		}
	}

	public function getFileCount()
	{
		return $this->_files;
	}
}

$DirSize = new DirSize('.', true);

print $DirSize->getFileCount();

?>
PS: Não usei glob() por questões que foram contra minha vontade; ela não soube contar direito, apenas isso. -_-

[]’s :DAté mais

#3 VultoBR

VultoBR

    Novato no fórum

  • Usuários
  • 8 posts
  • Sexo:Não informado

Posted 25/05/2007, 04:06

Opa :) o 2º funcinou perfeitamente obrigado pela ajuda, eu tentei fazer de diversas formar, e pelo que vejo é bem mais complicado do que eu pensava já que nao manjo nada de OOP , obrigado mesmo =).

Abraços =) t+

Edição feita por: VultoBR, 25/05/2007, 04:08.

www.sharingan.com.br

#4 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 25/05/2007, 04:55

Opa :) o 2º funcinou perfeitamente obrigado pela ajuda, eu tentei fazer de diversas formar, e pelo que vejo é bem mais complicado do que eu pensava já que nao manjo nada de OOP , obrigado mesmo =).

Abraços =) t+

Mas o primeiro (para PHP 4) também funcionou, né? Era pra funcionar... :P

Já que tu disse que não manja nada de OOP, não deixe de conferir o capítulo 19 do manual: Classes e Objetos (PHP 5) ;-)

No mais, de nada. ^_^

[]’s :DAté mais

#5 VultoBR

VultoBR

    Novato no fórum

  • Usuários
  • 8 posts
  • Sexo:Não informado

Posted 25/05/2007, 05:02

Bom já que você comentou, eu tentei utilizar o 1º e ele fico carregando, e depois aparece "Pagina nao encontrada".

Ah, pode deixar vou ler este capitulo concerteza =) Obrigado pela dica ^^

[]'s T+ xD
www.sharingan.com.br

#6 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 25/05/2007, 05:50

Bom já que você comentou, eu tentei utilizar o 1º e ele fico carregando, e depois aparece "Pagina nao encontrada".

Ah, pode deixar vou ler este capitulo concerteza =) Obrigado pela dica ^^

[]'s T+ xD

Estranho, aqui o código para PHP 4 funciona. Utilizo PHP 5.2.2. :huh:

Tu não tirou o set_time_limit(0); do código não, né? Pois se tirar ele e a função demorar mais que os 30 segundos padrão do PHP acontecerá isso mesmo... ;)

[]’s :DAté mais

#7 VultoBR

VultoBR

    Novato no fórum

  • Usuários
  • 8 posts
  • Sexo:Não informado

Posted 25/05/2007, 15:45

Bom já que você comentou, eu tentei utilizar o 1º e ele fico carregando, e depois aparece "Pagina nao encontrada".

Ah, pode deixar vou ler este capitulo concerteza =) Obrigado pela dica ^^

[]'s T+ xD

Estranho, aqui o código para PHP 4 funciona. Utilizo PHP 5.2.2. :huh:

Tu não tirou o set_time_limit(0); do código não, né? Pois se tirar ele e a função demorar mais que os 30 segundos padrão do PHP acontecerá isso mesmo... ;)

[]’s :D



Opa, mals a demora pra responder, tao frio ontem a noite aqui que fui obrigado a ir dormir hehe, mas no caso, eu nao mexi em nada, so copiei, colei, e coloquei dentro da pasta pra testar, o 1º nao foi o 2º foi rapidinho. Ai depois mexi no 2º pra pode se encaixar no meu codigo.

T+ xD
www.sharingan.com.br




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq