PHP利用迭代器删除复制文件参考

      发布在:后端技术      评论:0 条评论

采用迭代器删除和复制文件


if (!function_exists('rmdirs')) {

/**
    * 删除文件夹
    * @param string $dirname  目录
    * @param bool   $withself 是否删除自身
    * @return boolean
    */
   function rmdirs($dirname, $withself = true)
{
if (!is_dir($dirname)) {
return false;
}
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dirname, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::CHILD_FIRST
       );

foreach ($files as $fileinfo) {
$todo = ($fileinfo->isDir() ? 'rmdir' : 'unlink');
$todo($fileinfo->getRealPath());
}
if ($withself) {
@rmdir($dirname);
}
return true;
}
}

if (!function_exists('copydirs')) {

/**
    * 复制文件夹
    * @param string $source 源文件夹
    * @param string $dest   目标文件夹
    */
   function copydirs($source, $dest)
{
if (!is_dir($dest)) {
mkdir($dest, 0755, true);
}
foreach (
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST
           ) as $item
) {
if ($item->isDir()) {
$sontDir = $dest . DS . $iterator->getSubPathName();
if (!is_dir($sontDir)) {
mkdir($sontDir, 0755, true);
}
} else {
copy($item, $dest . DS . $iterator->getSubPathName());
}
}
}
}


相关文章
热门推荐