Navigate / search

Php – fgets() fgetc() fread() Dosyadan Bilgi Okuma

fgets() fgetc() fread() Dosyadan Bilgi Okuma

Dosyadan bilgi okuma konusunda şimdi göreceğimiz komut dosyanın tamamını bir seferde okumamaktadır.Bu komutlar ise satır satır veya karakter karakter okurlar.

fgets($dosyaadi); // Dosyayı satır satır okur.
fgetc($dosyaadi); // Karakterleri teker teker okur
fread($dosyaadi,3); // Dosyayı belirtilen karakterden sayısı kadar okur

Bu 3 komutuda kullanırken file pointer kullanmamız gerekmektedir.Bunların yanı sıra bu komutlarla ile dosyadan okuma yaparken dosyanın bitip bitmediğini anlamamız için şu ana kadar işlemediğimiz bir yöntem göreceğiz.Bu işlemi yaparken while döngüsünden faydanalanacağız.While döngüsünü unutanlar aşağdaki linkteki konuya bir göz atabilirler.

While Döngüsü

Metin dosyamızı şu şekilde oluşturalım;

Satır 1
Satır 2
Satır 3
Satır 4

İlk önce file pointer ile dosyamızı açıyoruz.

$dosyapointer=fopen($dosyaadi,"r") or die ("Dosya açılamadı.");

Şimdi fgets() fonskiyonunu bir deneyelim

$dosyaadi="dosya.txt";
$dosyapointer=fopen($dosyaadi,"r") or die ("Dosya açılamadı.");
$okunan=fgets($dosyapointer);
print $okunan;
fclose($dosyapointer);

fgets komutunun çalışmasından sonra ekranda şu cevabı alacağız;

Satır 1

komutu 3 kere daha çalıştırmamız lazım dosyanın tamamını okuyabilmemiz için.Ama dosyanın nerede bittiğini her zaman bilemiyebiliriz.Oyüzden farklı bi mantıkla bu işlemi dosya sonuna gelinceye kadar sürdürmeye devam edicez.Bu işlemi while döngüsü ile yapacağız.Döngü şartımız ise;

(! feof ($dosyapointer))

olacak.
Şartın anlamı;Açılan dosyanın sonuna geldik mi ? ,cevabı ise false olacak ” ! ” ünlem işareti ilede şartı true olarak çevireceğiz.Yani şart geçerli olduğu sürece döngü dönmeye devam edecek.Dosya sonuna geldiğimizde ise feof’ten dönen yanıt true olacak.Fakat başında bir ünlem olduğu için bunu false olarak çevirecek.Yani dosya sonuna geldiğimiz zaman while şartı false olacağından döngü duracak.

Şimdi bunu program üstünde görelim.

$dosyaadi="dosya.txt";
$dosyapointer=fopen($dosyaadi,"r") or die ("Dosya açılamadı.");
while (! feof($dosyapointer))
       {
       $okunan=fgets($dosyapointer);
       print $okunan."";
       }
fclose($dosyapointer);

Sonucumuz şu şekilde olacaktır;

Satır 1
Satır 2
Satır 3
Satır 4

Şimdi gelelim fgetc komutunda.Kodlarımızda sadece fgets yerine fgetc yazıyor.Sonucumuz şu şekilde oluyor.

S
a
t
ı
.
.
.
ı
r
 
4

Gördüğünüz gibi fgetc dosyayı karakter karakter okudu.

Şimdi ise fread komutunu inceleyelim.fread komutunda aynı bir parametre kullanmamız gerecek.Komutun orjinalini şu şekilde değiştirin kaydedin ve çalıştırın.

fread($dosyaadi,4)

Sonucumuz böyle olacaktır.

Satı
r 1S
atır
 2S
atır
 3S
atır
 4

fread komutuda her çalıştığında belirttiğimiz karakter sayısı kadar veri aldı.