考虑这段代码:
public static function removeDir($src)
{
if (is_dir($src)) {
$dir = @opendir($src);
if ($dir === false)
return;
while(($file = readdir($dir)) !== false) {
if ($file != '.' && $file != '..') {
$path = $src . DIRECTORY_SEPARATOR . $file;
if (is_dir($path)) {
self::removeDir($path);
} else {
@unlink($path);
}
}
}
closedir($dir);
@rmdir($src);
}
}
这将删除一个目录。但是,如果 unlink 失败或 opendir 在任何子目录上失败,则该目录将保留一些内容。
我想要删除所有内容,或者不删除任何内容。我正在考虑在删除之前复制目录,如果有任何失败,请恢复副本。但也许有更好的方法 - 比如锁定文件或类似的东西?