猿问

使用php将目录的全部内容复制到另一个目录

我尝试使用以下命令将目录的全部内容复制到另一个位置


copy ("old_location/*.*","new_location/");

但是它说找不到流,没有找到true *.*。


任何其他方式


谢谢戴夫


弑天下
浏览 991回答 3
3回答

翻过高山走不出你

看来复制只处理单个文件。这是我在复制文档页面上的本说明中找到的用于递归复制的功能:<?php&nbsp;function recurse_copy($src,$dst) {&nbsp;&nbsp; &nbsp; $dir = opendir($src);&nbsp;&nbsp; &nbsp; @mkdir($dst);&nbsp;&nbsp; &nbsp; while(false !== ( $file = readdir($dir)) ) {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if (( $file != '.' ) && ( $file != '..' )) {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( is_dir($src . '/' . $file) ) {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; recurse_copy($src . '/' . $file,$dst . '/' . $file);&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; copy($src . '/' . $file,$dst . '/' . $file);&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;&nbsp; &nbsp; }&nbsp;&nbsp; &nbsp; closedir($dir);&nbsp;}&nbsp;?>

鸿蒙传说

copy()仅适用于文件。DOS复制和Unix cp命令都将以递归方式复制-因此最快的解决方案是将它们打包并使用。例如`cp -r $src $dest`;否则,您将需要使用opendir/ readdir或scandir读取目录的内容,遍历结果,如果is_dir对每个目录都返回true,则递归进入该目录。例如function xcopy($src, $dest) {&nbsp; &nbsp; foreach (scandir($src) as $file) {&nbsp; &nbsp; &nbsp; &nbsp; if (!is_readable($src . '/' . $file)) continue;&nbsp; &nbsp; &nbsp; &nbsp; if (is_dir($src .'/' . $file) && ($file != '.') && ($file != '..') ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mkdir($dest . '/' . $file);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xcopy($src . '/' . $file, $dest . '/' . $file);&nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; copy($src . '/' . $file, $dest . '/' . $file);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}
随时随地看视频慕课网APP
我要回答