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);
?>
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
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";
}
?>
Leave a Reply