我想将一个文件夹内的所有文件和文件夹移动到另一个文件夹。 我发现一个代码将一个文件夹内的所有文件复制到另一个文件夹。 将文件夹中的所有文件移到另一个文件夹
// Get array of all source files $files = scandir("source"); // Identify directories $source = "source/"; $destination = "destination/"; // Cycle through all source files foreach ($files as $file) { if (in_array($file, array(".",".."))) continue; // If we copied this successfully, mark it for deletion if (copy($source.$file, $destination.$file)) { $delete[] = $source.$file; } } // Delete all successfully-copied files foreach ($delete as $file) { unlink($file); }
如何更改此项以将此文件夹内的所有文件夹和文件移至其他文件夹。
这是我使用的
// Function to remove folders and files function rrmdir($dir) { if (is_dir($dir)) { $files = scandir($dir); foreach ($files as $file) if ($file != "." && $file != "..") rrmdir("$dir/$file"); rmdir($dir); } else if (file_exists($dir)) unlink($dir); } // Function to Copy folders and files function rcopy($src, $dst) { if (file_exists ( $dst )) rrmdir ( $dst ); if (is_dir ( $src )) { mkdir ( $dst ); $files = scandir ( $src ); foreach ( $files as $file ) if ($file != "." && $file != "..") rcopy ( "$src/$file", "$dst/$file" ); } else if (file_exists ( $src )) copy ( $src, $dst ); }
用法
rcopy($source , $destination );
另一个例子没有删除目标文件或文件夹
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); }
请参阅: http : //php.net/manual/en/function.copy.php更多的例子
谢谢 :)
使用rename
而不是copy
。
与具有相同名称的C函数不同, rename
可以将文件从一个文件系统移动到另一个文件系统(从Unix上的PHP 4.3.3开始,在Windows上从PHP 5.3.1开始)。
认为这应该做的伎俩: http : //php.net/manual/en/function.shell-exec.php
shell_exec("mv sourcedirectory path_to_destination");
希望这个帮助。
移动文件夹:
<?php $oldfolderpath = "old/old_folder_name"; $newfolderpath = "new/new_folder_name"; rename($oldfolderpath,$newfolderpath); ?>
我用它
// function used to copy full directory structure from source to target function full_copy( $source, $target ) { if ( is_dir( $source ) ) { mkdir( $target, 0777 ); $d = dir( $source ); while ( FALSE !== ( $entry = $d->read() ) ) { if ( $entry == '.' || $entry == '..' ) { continue; } $Entry = $source . '/' . $entry; if ( is_dir( $Entry ) ) { full_copy( $Entry, $target . '/' . $entry ); continue; } copy( $Entry, $target . '/' . $entry ); } $d->close(); }else { copy( $source, $target ); } }
$src = 'user_data/company_2/T1/'; $dst = 'user_data/company_2/T2/T1/'; rcopy($src, $dst); // Call function // Function to Copy folders and files function rcopy($src, $dst) { if (file_exists ( $dst )) rrmdir ( $dst ); if (is_dir ( $src )) { mkdir ( $dst ); $files = scandir ( $src ); foreach ( $files as $file ) if ($file != "." && $file != "..") rcopy ( "$src/$file", "$dst/$file" ); } else if (file_exists ( $src )) copy ( $src, $dst ); rrmdir ( $src ); } // Function to remove folders and files function rrmdir($dir) { if (is_dir($dir)) { $files = scandir($dir); foreach ($files as $file) if ($file != "." && $file != "..") rrmdir("$dir/$file"); rmdir($dir); } else if (file_exists($dir)) unlink($dir); }