2013-11-04 50 views
0

我有一个关于我创建的函数的小问题。它应该删除每个目录和子目录(当然还有其中的文件),但它绝对没有任何东西!删除目录和子目录

function deletedirandfiles($data, $username){ 

       //$data correspond au chemin clé, cad à images/users 

       $dir = opendir($data); // On définit le répertoire dans lequel on souhaite travailler. 

       while (false !== ($fichier = readdir($dir))) // On lit chaque fichier du répertoire dans la boucle. 
       { 
        if (($fichier == '.') OR ($fichier == '..') OR ($fichier == '.DS_Store') OR ($fichier != $username)){ 
        // On ne fait rien pour ne pas les afficher 
        } 

        elseif (is_file($data.'/'.$fichier)){ 
         unlink($data.'/'.$fichier); 
        } 

        elseif (is_dir($data.'/'.$fichier)){ 
         $foldertoworkin = "$data/$fichier"; 
         deletedirandfiles($foldertoworkin, $username); //On lance la recursivité en reappelant la fonction 
         rmdir($data.'/'.$fichier); 
        } 

        else{ 

        } 

       } 

       closedir($dir); 

} 

在这种情况下:$ data =“images/users”和$ username =文件夹的名称。

任何想法为什么它不工作?

+0

指定一种语言,它将帮助人们根据语言知识回答您的问题 – Roman

+0

我假设PHP,如果不是您的问题,请重新提问 – rene

+0

是的,很抱歉,它是PHP。感谢您的标签。 – TheJailbreakBay

回答

0

的OS与隐藏文件工作无关的解决方案可能是:

public static function delTree($dir) { 
    $files = array_diff(scandir($dir), array('.','..')); 
    foreach ($files as $file) { 
     (is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file"); 
    } 
    return rmdir($dir); 
} 

你可以找到更多的例子:http://us3.php.net/rmdir

问候。