将文件夹中的所有文件移动到另一个文件夹?
当将一个文件从一个位置移动到另一个位置时,我使用
rename('path/filename', 'newpath/filename');
如何将文件夹中的所有文件移动到另一个文件夹?尝试了这个没有结果:
rename('path/*', 'newpath/*');
当将一个文件从一个位置移动到另一个位置时,我使用
rename('path/filename', 'newpath/filename');
如何将文件夹中的所有文件移动到另一个文件夹?尝试了这个没有结果:
rename('path/*', 'newpath/*');
一个稍微冗长的解决方案:
// 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);
}
使用 rename() 并进行一些错误检查的替代方法:
$srcDir = 'dir1';
$destDir = 'dir2';
if (file_exists($destDir)) {
if (is_dir($destDir)) {
if (is_writable($destDir)) {
if ($handle = opendir($srcDir)) {
while (false !== ($file = readdir($handle))) {
if (is_file($srcDir . '/' . $file)) {
rename($srcDir . '/' . $file, $destDir . '/' . $file);
}
}
closedir($handle);
} else {
echo "$srcDir could not be opened.\n";
}
} else {
echo "$destDir is not writable!\n";
}
} else {
echo "$destDir is not a directory!\n";
}
} else {
echo "$destDir does not exist\n";
}