3 回答
TA贡献1875条经验 获得超3个赞
看来复制只处理单个文件。这是我在复制文档页面上的本说明中找到的用于递归复制的功能:
<?php
function recurse_copy($src,$dst) {
$dir = opendir($src);
@mkdir($dst);
while(false !== ( $file = readdir($dir)) ) {
if (( $file != '.' ) && ( $file != '..' )) {
if ( is_dir($src . '/' . $file) ) {
recurse_copy($src . '/' . $file,$dst . '/' . $file);
}
else {
copy($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}
?>
TA贡献1865条经验 获得超7个赞
copy()仅适用于文件。
DOS复制和Unix cp命令都将以递归方式复制-因此最快的解决方案是将它们打包并使用。例如
`cp -r $src $dest`;
否则,您将需要使用opendir/ readdir或scandir读取目录的内容,遍历结果,如果is_dir对每个目录都返回true,则递归进入该目录。
例如
function xcopy($src, $dest) {
foreach (scandir($src) as $file) {
if (!is_readable($src . '/' . $file)) continue;
if (is_dir($src .'/' . $file) && ($file != '.') && ($file != '..') ) {
mkdir($dest . '/' . $file);
xcopy($src . '/' . $file, $dest . '/' . $file);
} else {
copy($src . '/' . $file, $dest . '/' . $file);
}
}
}
- 3 回答
- 0 关注
- 990 浏览
添加回答
举报