• PHP Video Tutorials

PHP - Copy File



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

  • Reading a line from one and writing to another in a loop

  • Reading entire contents to a string and writing the string to another file

  • 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.

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)

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

Hello World
TutorialsPoint
PHP Tutorials

Example

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);
?>

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

Method 2

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

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

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

Example

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 provides the copy() function, exclusively to perform copy operation.

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

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.

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

Example

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";
   }
?>
Advertisements