(PHP 4, PHP 5)
fwrite — Dosyaya ikil kipte yazar
fwrite() işlevi, dizge dizgesini dosya tanıtıcısı dt ile belirtilen dosya akımına yazar.
Bir dosya tanıtıcısı. Genellikle fopen() kullanılarak oluşturulur.
Akıma yazılacak dizge.
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ürece dizge 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";
}
?>