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 – file_get_contents () Tüm Dosyayı Bir Kerede Okumak

file_get_contents () Tüm Dosyayı Bir Kerede Okumak

Dosya ve dizin işlemleri ile ilgili önceki derslerimizde dosyaya farkı metodlarla yazmayı öğrenmiştik.Şimdi Dosyada okumayı göreceğiz.Dosyadan okumak için gerekli olan fonksiyonumuz file_get_contents () fonksiyonudur.

Komutun Kullanımı;

file_get_contents("dosya_adi");

İlk önce önce php dosyamızla aynı dizinde bir metin belgesi oluşturalım ve adını dosya.txt olarak değiştirelim.Metin belgemizin içine istediğimiz birşey yazabiliriz denemek için.Hatta bi kaç farklı satıra yazalım.

dosya.txt

Ocak
Şubat
Mart
Nisan

Şimdi bu dosyayı okumaya geldi sıra;
file_get_contents fonskiyonuyla okunan veriyi bir değişkene aktarıyoruz.Sonra print işlemi ile okunan veriyi yazdırıyoruz.

1
2
3
4
$dosyaadi="dosya.txt";
$okunan=file_get_contents($dosyaadi);
print "$dosyaadi 'den okunan veriler.";
print "$okunan";

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.

    file_put_contents () – Dosyaya Bilgi Yazmak

    Boş bir txt dosyasına bir metin eklemek için file_put_contents fonksiyonunu kullanırız.
    Şimdi PHP dosyamızla aynı klasörde bir txt dosyası oluşturalım.Dosyanın içine file_put_contents komutu ile yazmak istediklerimizi yazalım.

    Ama önce file_put_contents fonksiyonunun kullanımını görelim.

    file_put_contents(dosya_ismi , yazılacak metin)

    İlk parametre olarak txt dosyamızın adını yazacağız.İkinci parametre ise dosyanın içine yazacağımız metin olacak.
    Php dosyamızla aynı klasörde “bos_dosya.txt” isimli bir metin belgesi oluşturalım.

    $dosyaismi="bos_dosya.txt";
    $metin="Deneme Yazımız";
    $dizi=("Ocak","Şubat","Mart","Nisan");
     
    if(file_put_contents($dosyaismi,$metin)){
          echo "$dosyaismi isimli dosyaya yazma işlemi başarılı.";
    }else{
          echo "$dosyaismi isimli dosyaya yazma işlemi başarsız.";
    }

    Çalıştırdığınızda;

    bos_dosya.txt isimli dosyaya yazma işlemi başarılı.

    şeklinde mesaj alacaksınız.ve metin belgesine baktığınızda $metin değişkeninin içeriğindeki ifadenin metin belgesine eklendiğini göreceksiniz.

    file_put_contents fonksiyonu ile sadece bir değişken değil string bir ifade veya dizileride metin belgesine yazabiliriz.Aynı programda file_put_contents komutunu bu iki farklı şekilde deneyin.

    file_put_contents($dosyaismi, "String ifademiz")

    ve

    file_put_contents($dosyaismi, $dizi)

    String ifadeyide diziyide metin belgemize yazdığını göreceksiniz.

    ŞİMDİ GELELİM İŞİN PÜF NOKTASINA;

    bu ana kadar denediğimiz kodlarda durum şöyle idi.file_put_contents fonksiyonunu yukarıdaki gibi kullandığımızda txt dosyamızın içeriğinde ne varsa yok ederdi.Aynı Kodu birden fazla kere çalıştırsakta yazacağımız metini birden fazla görmeyiz.Yani dosyanın içeriğinde ne olursa olsun dosyanın son hali, ikinci parametrede belirttiğimiz metin olacaktır.

    Peki ya bu dosyaya biz bir metin eklemek istiyoruz.O zaman ne yapmalıyız ?
    İşte burda da FILE_APPEND parametresi devreye giriyor.file_put_contents fonksiyonunu şu şekilde kullanmamız dosyanın eski içeriğine zarar vermeden sadece ekleme yapmak için kullanabiliriz.

    file_put_contents($dosyaismi, $metin,FILE_APPEND)