Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou postando uma classe que utilizo para gerenciamento de diretórios, fui implemento as funções de acordo com as necessidades que foram surgindo.
Se alguém tiver alguma sugestão é só falar.
<?php
/**
* @author Diógenes Konrad Götz
* @link http://www.gotz.com.br
* @version 1.3
*
* @package GOTZ & KONRAD
* @subpackage FILE
*/
class fileDirmanager
{
public $Foldername;
private $Size=0;
/**
* Purpose: Verifica se é um diretorio
* @param STRING $Foldername
* @access PUBLIC
* @return BOOLEAN
*/
public function isDirectory( $Foldername )
{
return @is_dir( $Foldername );
}
/**
* Purpose: Verifica se existe conteúdo na pasta
* @param STRING $dir
* @access PUBLIC
* @return BOOLEAN
*/
public function getContents( $dir )
{
$handle = @opendir( $dir );
while ( false !== ( $sContents = @readdir($handle)))
if ( $sContents != "." && $sContents != ".." && $sContents != "" )
$arrContents[] = $dir."/".$sContents;
@closedir( $handle );
return $arrContents;
}
/**
* Purpose: Cria um diretório
* @param STRING $Foldername
* @param INTEGER $chmod
* @access PUBLIC
* @return BOOLEAN
*/
public function createFolder( $Foldername, $chmod=755 )
{
if ( @mkdir( $Foldername, $chmod ))
return true;
else return false;
}
/**
* Purpose: Cria um arquivo
* @param STRING $Filename
* @access PUBLIC
* @return BOOLEAN
*/
public function createFile ( $Filename )
{
if ( $fp = @fopen( $Filename, "w" ))
$ret = true;
else
$ret = false;
@fclose( $fp );
return $ret;
}
/**
* Purpose: Remove um arquivo
* @param STRING $Filename
* @access PUBLIC
* @return BOOLEAN
*/
public function removeFile ( $Filename )
{
if ( @unlink( $Filename ))
return true;
else return false;
}
/**
* Purpose: Remove um diretório, todas as suas pastas e arquivos
* @param STRING $Foldername
* @access PUBLIC
* @return BOOLEAN
*/
public function removeFolder ( $Foldername )
{
$arrContents = $this->getContents( $Foldername );
for( $i=0; $i < sizeof( $arrContents ); $i++ )
{
if ( !$this->isDirectory($arrContents[$i] )) {
$this->removeFile( $arrContents[$i] );
} else { $this->removeFolder( $arrContents[$i] ); }
}
if ( @rmdir( $Foldername )) return true;
else return false;
}
/**
* Purpose: Retorna o tamanho em bytes de um diretório
* @param STRING $Foldername
* @access PUBLIC
* @return BOOLEAN
*/
public function folderSize ( $Foldername ) {
$arrContents = $this->getContents( $Foldername );
for( $i=0; $i < sizeof( $arrContents ); $i++ )
{
if ( !$this->isDirectory( $arrContents[$i] )) {
$this->Size += ( filesize($arrContents[$i] ));
} else { $this->folderSize( $arrContents[$i] ); }
}
return $this->Size;
}
/**
* Purpose: Copia um arquivo
* @param STRING $origem
* @param STRING $destino
* @access PUBLIC
* @return BOOLEAN
*/
public function copyTo ( $origem, $destino )
{
if ( @copy( $origem, $destino ))
return true;
else return false;
}
/**
* Purpose: Faz a conversão de bytes para exibissão
* @param INTEGER $sz
* @access PUBLIC
* @return STRING
*/
public function ConvertSize ( $sz ) {
if ( $sz >= 1073741824 ) {$sz = round( $sz / 1073741824 * 100 ) / 100 . " GB";}
elseif ( $sz >= 1048576 ) {$sz = round( $sz / 1048576 * 100 ) / 100 . " MB";}
elseif ( $sz >= 1024 ) {$sz = round( $sz / 1024 * 100 ) / 100 . " KB";}
else {$sz = $sz . " Bytes";}
return $sz;
}
/**
* Purpose: Gera um nome aleatório
* @access PUBLIC
* @return STRING
*/
public function randomName() {
$allchar = "abcdefghijklnmopqrstuvwxyz123456789_-@&";
$_tmp = "";
mt_srand (( double) microtime() * 1000000 );
for ( $i = 0; $i<10; $i++ ) { $_tmp .= substr( $allchar, mt_rand (0,38), 1 ); }
$_tmp .= mktime();
return $_tmp;
}
};
?><?php
$__dir = "sampledir";
$dirManager = new fileDirmanager(); $dirManager->createFolder("{$__dir}/subfolder");
}
}
$dirManager->createFile("{$__dir}/log1.txt");
$dirManager->createFile("{$__dir}/{$dirManager->randomName()}.txt");
$dirManager->createFile("{$__dir}/subfolder/{$dirManager->randomName()}.txt");
$dirManager->createFile("{$__dir}/subfolder/{$dirManager->randomName()}.txt");
$dirManager->removeFile("{$__dir}/log1.txt");
echo "<pre>";
print_r($dirManager->getContents($__dir));
print_r($dirManager->getContents("{$__dir}/subfolder"));
echo "</pre>";
$dirManager->removeFolder($__dir);
?>Carregando comentários...