Php 简明教程

PHP - Copy File

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

You can copy an existing file to a new file in three different ways −

  1. Reading a line from one and writing to another in a loop

  2. Reading entire contents to a string and writing the string to another file

  3. Using PHP’s built-in function library includes copy() function.

Method 1

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

In the first approach, you can read each line from an existing file and write into a new file till the existing file reaches the end of file.

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

In the following PHP script, an already existing file (hello.txt) is read line by line in a loop, and each line is written to another file (new.txt)

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

It is assumed that "hello.txt" contains the following text −

Hello World
TutorialsPoint
PHP Tutorials

Example

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

Here is the PHP code to create a copy of an existing file −

<?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”文件应具有完全相同的内容。

The newly created "new.txt" file should have exactly the same contents.

Method 2

我们在此处从 PHP 库中使用了两个内置函数 -

Here we use two built-in functions from the PHP library −

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

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

This function reads the entire file into a string. The $filename parameter is a string containing the name of the file to be read

另一个函数是 -

The other function is −

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

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

The function puts the contents of $data in $filename. It returns the number of bytes written.

Example

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

In the following example, we read contents of "hello.txt" in a string $data, and use it as a parameter to write into "test.txt" file.

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

Method 3

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

PHP provides the copy() function, exclusively to perform copy operation.

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

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

The $from parameter is a string containing the existing file. The $to paramenter is also a string containing the name of the new file to be created. If the target file already exists, it will be overwritten.

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

The copy operation will return true or false based on the file being successfully copied or not.

Example

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

Let’s use the copy() function to make "text.txt" as a copy of "hello.txt" file.

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