将文件夹中的所有文件移动到另一个?

ajs*_*sie 29 php file

当我将一个文件从一个位置移动到另一个位置时

rename('path/filename', 'newpath/filename');
Run Code Online (Sandbox Code Playgroud)

如何将文件夹中的所有文件移动到另一个文件夹?尝试了这个没有结果:

rename('path/*', 'newpath/*');
Run Code Online (Sandbox Code Playgroud)

Sam*_*son 56

一个稍微冗长的解决方案:

// 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);
}
Run Code Online (Sandbox Code Playgroud)

  • 这是一个不错的解决方案,但更好的方法是使用PHP的rename()函数,如下面的答案所示.更少的代码=更快的处理速度.:) (3认同)

Gre*_*att 15

使用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";
}
Run Code Online (Sandbox Code Playgroud)


Lak*_*han 12

请尝试此解决方案,它已成功测试::

<?php
  $files = scandir("f1");
  $oldfolder = "f1/";
  $newfolder = "f2/";
  foreach($files as $fname) {
      if($fname != '.' && $fname != '..') {
          rename($oldfolder.$fname, $newfolder.$fname);
      }
  }
?>
Run Code Online (Sandbox Code Playgroud)