其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

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

GG网络技术分享 2025-03-18 16:17 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());

}

}

}

}

标签: 迭代 文件夹

提交需求或反馈

Demand feedback