Php 简明教程

PHP - Copy File

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

  1. 从一个文件读取一行,并循环写入另一个文件

  2. 将全部内容读入字符串,将字符串写到另一个文件

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

Method 1

在第一种方法中,你可以从现有文件中读取每一行,并写入新文件,直到现有文件到达文件结尾。

在以下 PHP 脚本中,一个已存在的文件 (hello.txt) 会在循环中逐行读取,并且每行会被写入到另一个文件 (new.txt)

我们假设“hello.txt”包含以下文本 -

Hello World
TutorialsPoint
PHP Tutorials

Example

以下是创建现有文件副本的 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”文件应具有完全相同的内容。

Method 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 中。它会返回写入的字节数。

Example

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

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

Method 3

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

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

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

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

Example

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

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