(PHP 4, PHP 5, PHP 7, PHP 8)
fwrite — Dosyaya ikil kipte yazar
fwrite() işlevi, veri dizgesini
dosya tanıtıcısı akım ile belirtilen dosya akımına
yazar.
akımBir dosya tanıtıcısı. Genellikle fopen() kullanılarak oluşturulur.
veriAkıma yazılacak dizge.
uzunluk
uzunluk bağımsız değişkeni bir tamsayı ise yazma
işlemi uzunluk bayt yazıldıktan sonra veya
dizge dizgesinin sonuna gelindiğinde durur
(hangisi önce vuku bulursa).
fwrite() işlevi bir hata oluşmamışsa yazılan baytların
sayısını, aksi takdirde false döndürür.
fwrite() başarısızlık durumunda
E_WARNING çıktılar.
| Sürüm: | Açıklama |
|---|---|
| 8.0.0 |
uzunluk artık null olabiliyor.
|
Ö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";
}
?>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 === false) {
return $written;
}
}
return $written;
}
?>
Bilginize:
İkil ve metin dosyaları farklı ele alan sistemlerde (Windows gibi) dosya açılırken fopen() işlevinin kip bağımsız değişkenine 'b' harfi dahil edilmelidir.
Bilginize:
Eğer
akımdosya sonuna ekleme kipinde açılmışsa (bazı sistemlerde ve dosya yerel dosya sisteminde olduğu süreceveriuzunluğ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.
?>