Comment puis-je faire ça? Y a-t-il une méthode fournie par Kohana 3? P>
5 Réponses :
Pour supprimer un répertoire et tout ce contenu, vous devrez écrire une fonction de suppression récursive - ou utilisez-en une qui existe déjà.
Vous pouvez trouver quelques exemples dans les notes de l'utilisateur sur la page de documentation de rmdir ; Par exemple, voici Celui proposé par Bcairns en août 2009 (citant) em>: p>
$ fichiers = glob ($ dir. '*', glob_mark); -> S'il vous plaît expliquer cette ligne. Merci.
La fonction glob code> (voir php.net/glob ) i > retournera tous les fichiers correspondant au modèle - et
* code> correspondra à tous les fichiers, ce qui signifie que GLOB renvoie une liste de tous les fichiers du répertoire pointé par
$ dir code>; ;
glob_mark code> signifie " ajoute une barre oblique à chaque répertoire renvoyé i>"
Et si vous souhaitez supprimer simplement le contenu du dossier - pas le dossier lui-même - supprimer le rmdir ($ dir); code> ligne
De plus, vous pouvez ajouter glob_nosort code> pour accélérer le retrait d'un bit, il serait donc
$ fichiers = glob ($ dir. '' ', Glob_mark | glob_nosort); code>
Avez-vous essayé de dissuader dans le répertoire?
chdir("file"); foreach (glob("N*") as $filename ) { unlink($filename); }
Je ne suis pas sûr de Kohana 3, mais j'utiliserais un répertoire () code> et
Dislink () code> en conjonction. P>
Je suggère de cette façon, simple et direct.
$files = glob('your/folder/' . '*', GLOB_MARK); foreach($files as $file) { if (is_dir($file)) { self::deleteDir($file); } else { unlink($file); } }
La solution de Pascal ne fonctionne pas sur tout le système d'exploitation. Par conséquent, j'ai créé une autre solution. Le code fait partie d'une bibliothèque de classe statique et est statique.
Il supprime tous les fichiers et répertoires dans un répertoire parent donné.
La fonction est récursive pour les sous-répertoires et a une option pour ne pas supprimer le répertoire parent ($ Garderfirst).
Si le répertoire parent n'existe pas ou n'est pas un répertoire 'NULL' est renvoyé. En cas de retard de suppression réussie, «vrai» est retourné.
/** * Deletes all files in the given directory, also the subdirectories. * @param string $dir Name of the directory * @param boolean $keepFirst [Optional] indicator for first directory. * @return null | true */ public static function deltree( $dir, $keepFirst = false ) { // First check if it is a directory. if (! is_dir( $dir ) ) { return null; } if ($handle = opendir( $dir ) ) { while (false !== ( $fileName = readdir($handle) ) ) { // Skips the hidden directory files. if ($fileName == "." || $fileName == "..") { continue; } $dpFile = sprintf( "%s/%s", $dir, $fileName ); if (is_dir( $dpFile ) ) { self::deltree( $dpFile ); } else { unlink( $dpFile ); } } // while // Directory removal, optional not the parent directory. if (! $keepFirst ) { rmdir( $dir ); } } // if return true; } // deltree
Quels systèmes OSES ne sont pas couverts de la solution de Pascal?
Merci, a manqué que
C'est un cadre PHP, bien que cette question n'a pas vraiment rien à voir avec elle, fascinée.