(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ım
Bir dosya tanıtıcısı. Genellikle fopen() kullanılarak oluşturulur.
veri
Akı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ım
dosya sonuna ekleme kipinde açılmışsa (bazı sistemlerde ve dosya yerel dosya sisteminde olduğu süreceveri
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.
?>