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ı.

Php – fwrite() – fputs() Dosya Yazma

Php – fwrite() – fputs() Dosya Yazma

Bir önceki derste gördüğümüz file_put_contents fonksiyonu ile dosyaya istediğimiz verileri yazmıştık.

Şimdi de fwrite fonksiyonu ile dosyaya yazma işlemini yapacağız.Fakat file_put_contents fonksiyonundan farklı olarak fwrite‘ı kullanabilmek için dosyayı açmamız gerekir.Bu arada hemen söyleyeyim başlıkta 2 farklı fonksiyon ismi göruyorsunuz.İkiside aynı görevi yapabiliyor bu komutların…

Dosya Açma İşlemlerini
ve File Pointer Kavramını bir kaç önceki dersimizde görmüştük.

  • fopen () Dosya Açmak ve Okumak
  • fclose() ile Açılmış Dosyayı Kapatmak
  • Şimdi yazmak istediğimiz dosyayı bir File Pointer belirterek Açıyoruz.”Or Die” ile karşılaşabilinecek sorunlara karşı hata mesajı verip programı durdurmayı sağlıyoruz.

    $dosya=fopen($dosyaismi,"w") or die ("Dosya Açılamadı");

    Burda kullandığımız $dosyaismi değişkeni dosyanin fiziksel adıdır.$dosya değişkeni ise file pointer olarak isimlendirdiğimiz dosyanın lojik değeridir.Kullandığımız “w” parametresi ise dosyayı yazma modunda açtığımızı gösteriyor.

    fwrite komutunu kullanırken dosyanın fiziksel adı değil de dosyanın lojik adını kullanacağız.

    fwrite($dosya, $metin);

    Şimdi Programın tamamını inceleyelim;

    $metin="Şafak Bilişim ile Php Dersleri";
    $dosya=fopen($dosyaismi,"w") or die ("Dosya Açılamadı");
    fwrite($dosya, $metin);
    fclose($dosya);

    İşlemimiz bittikten sonrada fclose ile açtığımız dosyayı kapattık.fclose ‘u kullanırkende yazdığımız değer yine dosyanın lojik değeri olacaktır.

    Bu dersimizde şu ana kadar hep boş bir dosyaya yazmak oldu.Şimdi dosyaya ekleme işlemini nasıl yapacağız birde ona bakalım.

    Değiştireceğimiz tek parametre dosyayı açarken kullandığımız “w” parametresi yerine “a” yani ekleme parametresini kullanmak olacak.

    $metin="Şafak Bilişim ile Php Dersleri";
    $dosya=fopen($dosyaismi,"a") or die ("Dosya Açılamadı");
    fwrite($dosya, $metin);
    fclose($dosya);

    Parametrelerle ilgili detayli bilgi için;
    fopen () Dosya Açmak ve Okumak
    konusuna göz atabilirsiniz.

    Php – fopen () Dosya Açmak ve Okumak

    Php’de Dosya ve Dizin İşlemleri fopen() komutu ile Dosya Açma

    Phpde dosya nasıl oluşturulur öğrenmiştik.Şimdide mevcut yada bizim oluşturduğumuz bir dosyayı açmayı öğreneceğiz.Dosyayı neden açmamız gerekir diye sorarsanız.Düzenlememiz veya birşey eklememiz gerekebilir.İşte bunun için dosyayı ilk önce düzgün bir şekilde açmamız gerekir.

    Dosya açarken unutmamamız gereken bir durum var.Buda file pointer denilen sistem.Dosyayı açarken fopen komutunu bir değişkene eşitlememiz gerekiyor.Açılan dosyayı lojik olarak bir değişkende tutmamız gerekiyor.Bunu ne için yapıyoruz sabredin bu dersi bitirin ve bir sonraki derse geçin ;)

    fopen komutunun kullanımı;

    1
    
    $dosya=fopen("dosya adi","parametre");

    örnek olarakta;

    1
    
    $dosya=fopen("dosya.txt","r");

    gösterebiliriz.
    Dosya oluşturma ve silme komutlarından farklı olarak parametre kullanmamız gerekir fopen() komutunda.Bu parametreler dosyayı açtığımız zaman ne yapabileceğimizi belirler.
    Basit olarak parametlerle neler yapabileceğimize bir bakalım.

    Dosya.txt’yi sadece okumak için açar.

    1
    
    $dosya=fopen("dosya.txt","r");

    Olmayan bir dosyayı oluşturmak ve yazmak için açar.

    1
    
    $dosya=fopen("dosya.txt","w");

    Dosyaya ek yapmak için açar

    1
    
    $dosya=fopen("dosya.txt","a");

    Şimdi Fopen() Komutunu diğer dosya ve dizin işlemlerinde öğrendiğimiz gibi kontrolünü sağlayarak yazalım.

    1
    2
    3
    4
    5
    6
    
    $dosya_adi="dosya.txt";
    if ($dosya=@fopen($dosya_adi,"r")) {
           echo "$dosya_adi isimli Dosya Açıldı";
    }else{
           echo "$dosya_adi isimli Dosya Açıldı.";
    }