Mevcut bir dosyayı yeni bir dosyaya üç farklı şekilde kopyalayabilirsiniz:
Bir satırdan diğerine döngü halinde bir satır okuyup yazmak
Tüm içerikleri bir dizeye okuma ve dizeyi başka bir dosyaya yazma
PHP'nin dahili fonksiyon kütüphanesi copy() fonksiyonunu içerir.
Yöntem 1 İlk yaklaşımda, var olan bir dosyadan her satırı okuyabilir ve var olan dosya dosya sonuna ulaşana kadar yeni bir dosyaya yazabilirsiniz.
Aşağıdaki PHP betiğinde, önceden var olan bir dosya (hello.txt) bir döngü içinde satır satır okunur ve her satır başka bir dosyaya (new.txt) yazılır
"hello.txt" dosyasının aşağıdaki metni içerdiği varsayılmaktadır:
Hello World
TutorialsPoint
PHP Tutorials
Örnek Mevcut bir dosyanın kopyasını oluşturmak için PHP kodu şu şekildedir:
PHP:Panoya kopyala
<?php
$file = fopen("hello.txt", "r");
$newfile = fopen("new.txt", "w");
while(! feof($file)) {
$str = fgets($file);
fputs($newfile, $str);
}
fclose($file);
fclose($newfile);
?>
Yeni oluşturulan "new.txt" dosyasının içeriğinin tamamen aynı olması gerekir.
Yöntem 2 Burada PHP kütüphanesinden iki yerleşik işlevi kullanıyoruz:
file_get_contents(
string $filename,
bool $use_include_path = false,
?resource $context = null,
int $offset = 0,
?int $length = null
): string|false
Bu fonksiyon tüm dosyayı bir dizeye okur. $filename parametresi okunacak dosyanın adını içeren bir dizedir.
Diğer fonksiyon ise:
file_put_contents(
string $filename,
mixed $data,
int $flags = 0,
?resource $context = null
): int|false
Fonksiyon $data'nın içeriğini $filename'e koyar. Yazılan bayt sayısını döndürür.
Örnek Aşağıdaki örnekte "hello.txt" dosyasının içeriğini $data dizisinde okuyup, bunu "test.txt" dosyasına yazmak için parametre olarak kullanıyoruz.
PHP:Panoya kopyala
<?php
$source = "hello.txt";
$target = "test.txt";
$data = file_get_contents($source);
file_put_contents($target, $data);
?>
Yöntem 3 PHP, copy() fonksiyonunu yalnızca kopyalama işlemini gerçekleştirmek için sağlar.
copy(string $from, string $to, ?resource $context = null): bool
$from parametresi mevcut dosyayı içeren bir dizedir.
$to parametresi de oluşturulacak yeni dosyanın adını içeren bir dizedir. Hedef dosya zaten mevcutsa, üzerine yazılır.
Kopyalama işlemi, dosyanın başarıyla kopyalanıp kopyalanmamasına bağlı olarak
true veya
false döndürecektir.
Örnek "text.txt" dosyasını "hello.txt" dosyasının bir kopyası yapmak için copy() fonksiyonunu kullanalım.
PHP:Panoya kopyala
<?php
$source = "a.php";
$target = "a1.php";
if (!copy($source, $target)) {
echo "failed to copy $source...\n";
}
?>