(PHP 4, PHP 5)
fwrite — Dosyaya ikil kipte yazar
$dt
, string $dizge
[, int $uzunluk
] )
fwrite() işlevi, dizge
dizgesini
dosya tanıtıcısı dt
ile belirtilen dosya akımına
yazar.
dt
Bir dosya tanıtıcısı. Genellikle fopen() kullanılarak oluşturulur.
dizge
Akıma yazılacak dizge.
uzunluk
uzunluk
değiştirgesi belirtilmişse yazma işlemi
uzunluk
bayt yazıldıktan sonra veya
dizge
dizgesinin sonuna gelindiğinde durur
(hangisi önce vuku bulursa).
uzunluk
değiştirgesi belirtildiği takdirde magic_quotes_runtime
yapılandırma yönergesi yoksayılarak dizge
dizgesinde bölü çizgileri ayıklaması yapılmaz.
fwrite() işlevi bir hata oluşmamışsa yazılan baytların
sayısı ile aksi takdirde FALSE
ile döner.
Bilginize:
Bir ağ akımına yazarken, dizgenin tamamı yazılamadan akım kapanabilir. Bu durum fwrite() dönüş değerinden saptanabilir:
<?php
function fwrite_stream($fp, $string) {
for ($written = 0; $written < strlen($string); $written += $fwrite) {
$fwrite = fwrite($fp, substr($string, $written));
if (!$fwrite) {
return $fwrite;
}
}
return $written;
}
?>
Bilginize:
İkil ve metin dosyaları farklı ele alan sistemlerde (Windows gibi) dosya açılırken fopen() işlevinin kip değiştirgesine 'b' harfi dahil edilmelidir.
Bilginize:
Eğer
dt
dosya sonuna ekleme kipinde açılmışsa (bazı sistemlerde ve dosya yerel dosya sisteminde olduğu sürecedizge
uzunluğu dosya sisteminin blok boyunu aşmadığı takdirde) yazma işlemi atomiktir. Yani, fwrite() işlevini çağırmadan önce dosya tanıtıcısını flock() ile kilitlemeye gerek yoktur; tüm veri kesintiye uğramaksızın yazılacaktır.
Bilginize:
Eğer dosya tanıtıcısında peşpeşe iki yazma yaparsanız, her iki veri de dosyanın sonuna eklenir:
<?php
$dt = fopen('veri.txt', 'w');
fwrite($dt, '1');
fwrite($dt, '23');
fclose($dt);
// veri.txt dosyasının içeriği '123' değil '23' olacaktır.
?>
Örnek 1 - Basit bir fwrite() örneği
<?php
$dosya = 'dnm.txt';
$veri = "Bunu dosyaya ekleyelim\n";
// Önce dosya mevcut mu ve yazılabilir mi, bakalım.
if (is_writable($dosya)) {
// Örneğimizde $dosya'yı ekleme kipinde açıyoruz.
// Konumlayıcı dosyanın sonunda olduğundan fwrite()
// $veri dizgesini dosyanın sonuna ekleyecektir.
if (!$dt = fopen($dosya, 'a')) {
echo "$dosya dosyası açılamadı";
exit;
}
// $veri'yi açılan dosyaya yazalım.
if (fwrite($dt, $veri) === FALSE) {
echo "$dosya dosyasına yazılamıyor";
exit;
}
echo "$dosya dosyasına '$veri' başarıyla yazıldı";
fclose($dt);
} else {
echo "$dosya dosyası yazılabilir değil";
}
?>