PHP - 复制文件



您可以通过三种不同的方式将现有文件复制到新文件:

  • 循环读取一行并写入另一行

  • 将整个内容读取到字符串中,然后将字符串写入另一个文件

  • 使用PHP的内置函数库,包括copy()函数。

方法1

在第一种方法中,您可以逐行读取现有文件,并将其写入新文件,直到现有文件到达文件末尾。

在下面的PHP脚本中,一个已存在的(hello.txt)文件在循环中逐行读取,每一行都写入另一个文件(new.txt)

假设“hello.txt”包含以下文本:

Hello World
TutorialsPoint
PHP Tutorials

示例

以下是创建现有文件副本的PHP代码:

<?php
   $file = fopen("hello.txt", "r");
   $newfile = fopen("new.txt", "w");
   while(! feof($file)) {
      $str = fgets($file);
      fputs($newfile, $str);
   }
   fclose($file);
   fclose($newfile);
?>

新创建的“new.txt”文件应该具有完全相同的内容。

方法2

这里我们使用了PHP库中的两个内置函数:

file_get_contents(
   string $filename,
   bool $use_include_path = false,
   ?resource $context = null,
   int $offset = 0,
   ?int $length = null
): string|false

此函数将整个文件读取到一个字符串中。$filename参数是一个包含要读取的文件名的字符串。

另一个函数是:

file_put_contents(
   string $filename,
   mixed $data,
   int $flags = 0,
   ?resource $context = null
): int|false

该函数将$data的内容放入$filename中。它返回写入的字节数。

示例

在下面的示例中,我们将“hello.txt”的内容读取到字符串$data中,并将其用作参数写入“test.txt”文件。

<?php
   $source = "hello.txt";
   $target = "test.txt";
   $data = file_get_contents($source);
   file_put_contents($target, $data);
?>

方法3

PHP 提供了copy()函数,专门用于执行复制操作。

copy(string $from, string $to, ?resource $context = null): bool

$from参数是一个包含现有文件的字符串。$to参数也是一个包含要创建的新文件名的字符串。如果目标文件已存在,它将被覆盖。

复制操作将根据文件是否成功复制返回truefalse

示例

让我们使用copy()函数将“text.txt”作为“hello.txt”文件的副本。

<?php
   $source = "a.php";
   $target = "a1.php";
   if (!copy($source, $target)) {
      echo "failed to copy $source...\n";
   }
?>
广告