com.neolao.system.FolderUtils
Méthodes statiques liées aux dossiers.
Exemple
// listing $maListe = FolderUtils::listing("home/www"); echo "Le type de mon élément est: ".$maListe[0]["type"]; echo "Le nom de mon élément est: ".$maListe[0]["name"]; echo "Le nom sans majuscule de mon élément est: ".$maListe[0]["nameSort"];
Méthodes
Visibilité | Nom | Param 1 | Param 2 | Param 3 | Description |
---|---|---|---|---|---|
static public | listing | string $path | Liste les fichiers d'un dossier | ||
static public | delete | string $path | Efface un dossier et tout son contenu | ||
static public | size | string $path | bool $recursive | Récupère la taille du dossier | |
static public | copy | string $source | string $destination | string $type | Copie le contenu d'un dossier dans un autre |
Change log
[03/03/2005] Version 1.0
Ajout de la méthode listing
[05/03/2005] Version 1.1
Ajout de la méthode delete
[06/03/2005] Version 1.2
Ajout de la méthode size
[10/03/2005] Version 1.3
Ajout de la méthode copy
[30/03/2005] Version 1.4
Modification de la méthode copy. La copie de sous répertoire était buggée.
[08/04/2005] Version 1.5
Modification de la méthode copy. La copie de sous répertoire était buggée (encore).
Source
/** * Méthodes static liées aux dossiers * @package com.neolao * @subpackage system * @author neolao <neo@neolao.com> * @version 1.5 (08/04/2005) * @link http://resources.neolao.com/php/classes/system/FolderUtils */ class FolderUtils { // ----------------------------- CONSTANTES -------------------------------- // ----------------------------- VARIABLES --------------------------------- /*=========================== METHODES PRIVEES ===========================*/ /*========================================================================*/ /*===================== FIN = METHODES PRIVEES = FIN =====================*/ /*========================================================================*/ /*============================ GETTER SETTER ============================*/ /*========================================================================*/ /*====================== FIN = GETTER SETTER = FIN ======================*/ /*========================================================================*/ /*========================== METHODES PUBLIQUES ==========================*/ /*========================================================================*/ /** * Liste les fichiers d'un dossier * * @param string $path Le chemin du dossier que l'on veut explorer * @return array La liste des fichiers du dossier, sinon false */ static public function listing($path){ // $root = substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], "/")+1); // $folderResource; // La ressource du dossier à explorer // $fileName; // Le nom d'un fichier // $result; // La liste des fichiers trouvés dans le dossier // Si le chemin du dossier ne se termine pas par un slash, on l'ajoute if(substr($path, -1) != "/"){ $path .= "/"; } $folderResource = @opendir($path); if($folderResource !== false){ // L'ouverture du dossier a réussi $result = array(); $i = 0; while (($fileName = readdir($folderResource)) !== false){ $result[$i] = array(); $result[$i]["type"] = filetype($path.$fileName); $result[$i]["nameSort"] = strtolower($fileName); $result[$i]["name"] = $fileName; $i++; } closedir($folderResource); sort($result); return $result; } return false; } /** * Efface un dossier et tout son contenu * @param string $path Le chemin du dossier que l'on veut supprimer * @return bool true si l'opération a réussi, sinon false */ static public function delete($path){ if(!is_dir($path)){ return false; }else{ $path = realpath($path); } $folder = opendir($path); $skip = array(".", ".."); while($file = readdir($folder)){ if (!in_array( $file, $skip)){ if (is_dir($path."/".$file)){ self::delete("$path/$file"); } else { if(!unlink("$path/$file")){ return false; } } } } @closedir($folder); if(!rmdir($path)){ return false; }else{ return true; } } /** * Récupère la taille du dossier * @param string $path Le chemin du dossier * @param bool $recursive Indique s'il faut regarder dans les sous dossiers * @return int La taille du dossier en octect */ static public function size($path , $recursive=TRUE){ $path = realpath($path); $result = 0; if(!is_dir($path) || !is_readable($path)){ return 0; } $fd = dir($path); while($file = $fd->read()){ if(($file != ".") && ($file != "..")){ if(@is_dir("$path/$file")){ $result += $recursive?self::size("$path/$file"):0; }else{ $result += filesize("$path/$file"); } } } $fd->close(); return $result; } /** * Copie le contenu d'un dossier dans un autre * @param string $source Le chemin du dossier source * @param string $destination Le chemin du dossier destination * @param string $type Les extensions à copier, séparées par des ",", sinon "*" pour tout copier * @return bool true si l'opération s'est bien passée, sinon false */ static public function copy($source , $destination, $type="*"){ $sourcePath = realpath($source); $destPath = realpath($destination); $listType = split(",", $type); if(!is_dir($sourcePath) || !is_readable($sourcePath) || !is_dir($destPath) || !is_readable($destPath)){ return false; } $fd = dir($sourcePath); while($file = $fd->read()){ if(($file != ".") && ($file != "..")){ if(is_dir("$sourcePath/$file")){ if(!is_dir("$destPath/$file")){ mkdir("$destPath/$file"); } if(!self::copy("$sourcePath/$file", "$destPath/$file", $type)){ return false; } }else{ $fileInfo = pathinfo("$sourcePath/$file"); if($type === "*" || in_array($fileInfo["extension"], $listType)){ if(!@copy("$sourcePath/$file", "$destPath/$file")){ return false; } } } } } $fd->close(); return true; } /*==================== FIN = METHODES PUBLIQUES = FIN ====================*/ /*========================================================================*/ }