复制移动整个文件夹php代码三种写法:
一、使用递归的方式复制和移动文件夹
1、复制文件夹
</>code
- function copyall($filesrc, $newpath) {
- $dir = opendir($filesrc);
- @mkdir($newpath);
- while (($file = readdir($dir)) !== false) {
- if ($file !== '.' && $file !== '..') {
- if (is_dir($filesrc . '/' . $file)) {
- copyall($filesrc . '/' . $file, $newpath . '/' . $file);
- } else {
- copy($filesrc . '/' . $file, $newpath . '/' . $file);
- }
- }
- }
- closedir($dir);
- }
2、移动文件夹
</>code
- function moveall($filesrc, $newpath) {
- $dir = opendir($filesrc);
- @mkdir($newpath);
- while (($file = readdir($dir)) !== false) {
- if ($file !== '.' && $file !== '..') {
- if (is_dir($filesrc . '/' . $file)) {
- moveall($filesrc . '/' . $file, $newpath . '/' . $file);
- } else {
- rename($filesrc . '/' . $file, $newpath . '/' . $file);
- }
- }
- }
- closedir($dir);
- }
二、使用迭代的方式复制和移动文件夹
1、复制文件夹
</>code
- function copyall($filesrc, $newpath) {
- $dirStack = array($filesrc);
- $newpathStack = array($newpath);
- while (!empty($dirStack)) {
- $currentSrc = array_pop($dirStack);
- $currentDst = array_pop($newpathStack);
- @mkdir($currentDst);
- $dir = opendir($currentSrc);
- while (($file = readdir($dir)) !== false) {
- if ($file !== '.' && $file !== '..') {
- if (is_dir($currentSrc . '/' . $file)) {
- array_push($dirStack, $currentSrc . '/' . $file);
- array_push($newpathStack, $currentDst . '/' . $file);
- } else {
- copy($currentSrc . '/' . $file, $currentDst . '/' . $file);
- }
- }
- }
- closedir($dir);
- }
- }
2、移动文件夹
</>code
- function moveall($filesrc, $newpath) {
- $dirStack = array($filesrc);
- $newpathStack = array($newpath);
- while (!empty($dirStack)) {
- $currentSrc = array_pop($dirStack);
- $currentDst = array_pop($newpathStack);
- @mkdir($currentDst);
- $dir = opendir($currentSrc);
- while (($file = readdir($dir)) !== false) {
- if ($file !== '.' && $file !== '..') {
- if (is_dir($currentSrc . '/' . $file)) {
- array_push($dirStack, $currentSrc . '/' . $file);
- array_push($newpathStack, $currentDst . '/' . $file);
- } else {
- rename($currentSrc . '/' . $file, $currentDst . '/' . $file);
- }
- }
- }
- closedir($dir);
- }
- }
三、使用 PHP 的函数库(FilesystemIterator 和 RecursiveDirectoryIterator)复制和移动文件夹
1、复制文件夹
</>code
- function copyall($filesrc, $newpath) {
- $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($filesrc, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::SELF_FIRST);
- foreach ($iterator as $file) {
- $target = $newpath . '/' . $iterator->getSubPathName();
- if ($file->isDir()) {
- mkdir($target);
- } else {
- copy($file, $target);
- }
- }
- }
2、移动文件夹
</>code
- function copyall($filesrc, $newpath) {
- $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($filesrc, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::SELF_FIRST);
- foreach ($iterator as $file) {
- $target = $newpath . '/' . $iterator->getSubPathName();
- if ($file->isDir()) {
- mkdir($target);
- } else {
- rename($file, $target);
- }
- }
- }
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛