PHP De Dosya Okuma
Açtığımız bir
dosyanın içindeki yazıları çoğu zaman programımıza satır satır
okuturuz. PHP`de bir dosyanın içeriğini satır satır okutmamızı
fgets() fonksiyonu sağlar. Bu fonksiyona daha
önce açılmış olan dosyanın işaret değişkenin adını ve
okunmasını istediğimiz asgari byte ölçüsünü parametre olarak
veririz. fgets() fonksiyonu verdiğimiz
uzunluk ölçüsüne ulaşmadan önce dosyada bir yeni satır işareti
görürse, veya dosyanın sonuna ulaşırsa, okumaya son verir. Bu
fonksiyonu çoğu zaman bir döngünün içinde kullanırız. Ancak
döngünün hata vermemesi için, PHP`nin dosyanın sonuna
ulaştığında döngüyü durdurmamız gerekir. fgets()
fonksiyonunun okuyacağı satırı bir fonksiyona değer
olarak verebilir ve daha sonra bu değeri programlarımızda
kullanabiliriz. Örnek:
php:
<?php
$dosya_dizin = "/inetpub/wwwroot/";
if ($dosya = (fopen ("$dosya_dizin/bir_dosya.txt" , `r`) ) ) {
print ("Dosya açıldı!<br>");
}
else {
print ("Dosya açılamadı!");
}
while ( ! feof ($dosya ) ) {
$satir = fgets ( $dosya, 1024 ) ;
print ("$satir<br>");
}
fclose ($dosya);
?>
Bu program kişisel Web sunucuda önce varolan bir dosyayı
açıyor; ve bu dosyanın işaretçisi olarak $dosya değişkenini
kullanıyor. Daha sonra bir while() döngüsü içinde bu değişkeni
ve 1 KB (1024 byte) ölçüsünü parametre olarak vererek fgets()
fonksiyonu ile dosyadan bir satır okutuyoruz. fgets()
fonksiyonundan dönen bir satırlık metni, burada $satir
değişkenine atıyoruz; ve daha sonra print() fonksiyonu ile bu
satırı Browser penceresine gönderiyoruz. Bu işlemi
Internet`teki bir Web sunucuda uygulayabilmek için yazma/okuma
izni bulunan ve Web sunucunun erişebileceği bir dizinin adını
vermeniz gerekir. Bu işlemin içinde yapıldığı while()
döngüsünün devam şartı olarak kullandığımız ifadede yer alan
feof() fonksiyonu bir dosyanın dosya-sonu (end-of-file)
durumuna ulaşıp ulaşmadığını sınar. PHP, her dosyanın sonunda
yer alan eof (Ctrl-z, ^z) işaretine eriştiği anda feof()
fonksiyonu doğru/true değerini verir. while() döngüsü, feof()
doğru değilken devam etmek üzere kurulmuş olduğu için, dosya
sonuna ulaştığımızda döngü duracaktır. Okuma işlemini
durabilen bir döngüye bağlamazsak, fgets() PHP`nin bir
programın sona ermesi için verilmiş varsayılan süresi
doluncaya kadar dosyayı okumak isteyecektir.
Kimi zaman dosyalarımızın içeriğini satır-satır okutmak
yerine, kendi tayin edeceğimiz uzunlakta parçalar halinde
okutmak isteriz. Bunu, fread() fonksiyonu ile sağlarız. Örnek:
php:
<?php
$dosya_dizin = "/inetpub/wwwroot/";
if ($dosya = (fopen ("$dosya_dizin/bir_dosya.txt" , `r`) ) ) {
print ("Dosya açıldı!<br>");
}
else {
print ("Dosya açılamadı!");
}
while ( ! feof ($dosya) ) {
$paragraf = fread ( $dosya, 1024 ) ;
print ("$paragraf<br>");
}
fclose ($dosya);
?>
fread() fonksiyonu da daha önce açılmış olan dosyanın işaret
değişkenin adını ve okunmasını istediğimiz asgari byte
ölçüsünü parametre olarak alır. fread() fonksiyonu verdiğimiz
uzunluk ölçüsüne ulaşmadan önce dosyada bir yeni satır işareti
görürse, veya dosyanın sonuna ulaşırsa, okumaya son verir. Bu
fonksiyondan yararlanırken, verdiğiniz uzunluk ölçüsünün,
almak istediğiniz metin parçasına uygun olduğunu
sınamalısınız. fread(), bu ölçüye ulaştığında okumayı keser.
Buradaki örneği 1024 byte ölçüsünü değiştirerek ve mesela 1,
2, 3 yaparak deneyebilir ve böylece vereceğiniz ölçünün okunan
metnin uzunluğunu nasıl tayin ettiğini görebilirsiniz.
|