6-Dosya İşlemleri

Dosya işlemleri, PHP kodları ile dosyaya veri yazma, dosya içeriğini okuma/değiştirme, dosya oluşturma/silme, dosya listesi okuma vb işlemlerin yapılabilmesini sağlar.

Basit veritabanı uygulamaları yapmak, web sitesi ziyaret logları oluşturmak, basit ziyaretçi defteri yapmak için dosya işlemlerini kullanabilirsiniz.

Konular

Dosyalarla çalışmak için öncelikle dosyanın açılması gerekmektedir.

Dosya Açma

$f=fopen(“dosyayolu/dosyaadi.uznt”,$acmasekli);

$acmasekli, fopen fonksiyonun dosya erişiminde kullanacağı yöntemi belirler.

  • r : Dosyanın sadece okuma için açılmasını sağlar. İşaretçi dosya en başına yerleştirilir.
  • r+ : Dosyanın hem okuma hem de yazma için açılmasını sağlar. İşaretçi dosya başına yerleştirilir.
  • w : Dosyanın sadece yazma için açılmasını sağlar. Dosya boyutu sıfır olarak ayarlanır. Eğer dosya bulunamazsa, oluşturulur.
  • w+ : Dosyanın hem okuma hem de yazma için açılmasını sağlar. Dosya boyutu sıfır olarak ayarlanır. Eğer dosya bulunamazsa, oluşturulur.
  • a : Dosyanın ekleme için açılmasını sağlar. İşaretçi dosya sonuna yerleştirilir.
  • a+ : Dosyanın hem okuma hem de ekleme için açılmasını sağlar. İşaretçi dosya sonuna yerleştirilir. Eğer dosya bulunamazsa oluşturulur.
  • x, x+ : Dosyanın sıfırdan oluşturulup, okuma / okuma ve yazma için açılmasını sağlar. Eğer dosya varsa, hata verir.
  • c, c+ : Varolan dosyanın silinmeden açılmasını, olmayan dosyanın oluşturulmasını sağlar. İşaretçi dosya başına yerleştirilir. Yazma / okuma ve yazma için açılmasını sağlar.

Dosyadan Okuma

Dosya okuma için açıldıktan sonra, fread komutu yardımı ile, dosyadan okuma işlemi gerçekleştirilir. fread komutu okuduğu verileri eşitlendiği değişkene aktararak kullanıma sunar,. Bu veriler üzerinde istenilen işlemler gerçekleştirilebilir.

Kullanımı:

$f=fopen(“dosyayolu”,”r”);
$fs=filesize($f); //Dosya Boyutunu bu şekilde öğrenebiliriz.
$okunan=fread($f,$fs);

fread komutu iki parametre alır; Birinci parametre açılan dosya tutucusudur ($f), İkinci parametre, okunacak olan veri miktarını byte türünde belirler. Dosyanın tamamını okumak yerine, belirli bir miktarını okuma imkanı sağlar. Dosyanın tamamının okunabilmesi için filesize($f) komutu ile açmış olduğumuz dosyanın boyutunu öğrenebiliriz.

İşimiz bittikten sonra açmış olduğumuz dosyayı kapatmayı unutmayalım.

Dosyaya Yazma

Dosyaya veri yazmak için öncelikle dosyamızı yazılabilir şekilde açmamız gerekmektedir. Daha sonra dosyaya yazmak istediğimiz veriyi fwrite komutu ile dosyaya aktarabiliriz.

Kullanımı:

$f=fopen(“dosyayolu”,”w”); veya $f=fopen(“dosyayolu”,”a”)

fwrite($f,$veri);

fwrite komutu iki parametre alır; birinci parametre açılan dosya tutucusudur ($f), ikinci parametre ise dosyaya yazılacak olan veriyi içerir ($veri).

Burada dikkat edilmesi gerekn nokta, dosyayı açarken kullanacağımız açma türüdür. w türünde açılan dosyalara yeni bir veri yazıldığı zaman eski veriler silinecektir. a türünde açılan dosyalara yeni veri yazıldığında; yazılan yeni veri eski verinin sonuna eklenir.

İpucu: Log kayıtları gibi verileri dosyaya yazarken a (sonuna ekleme) türünde, Sayaç gibi yenilenen veriler kullanılacaksa w (üzerine yazma) türünde açmak aha faydalı olacaktır.

Dosyanın Varlığını Kontrol Etme, Okuma/Yazma İzinleri

Dosya okuma işlemi yapmadan önce dosyanın varlığını kontrol etmek, yapılması gereken en önemli işlerdendir. Bunun için; file_exists fonksiyonu kullanılır.

Kullanımı:

if(file_exists(“dosyayolu”))
echo “Dosya var”;
else
echo “Dosya bulunamadı”;

file_exists fonksiyonu sadece dosya yolunu parametre olarak alır. Eğer dosya var ise; Doğru (true), dosya yok veya ulaşılamaz ise Yanlış (false) değerini döndürür.

Dosyanın varlığı doğrulandıktan sonra, dosyanın okunabilir mi, yazılabilir mi olduğunu öğrenmemiz gerekiyor. Bunun için is_readable (okunabilir mi), is_writable (yazılabilir mi) fonksiyonları kullanılabilir.

is_readable: Dosya yetkileri kontrol edilerek, dosyayı okuma iznimiz olup olmadığı kontrol edilebilir. Eğer dosyayı okuma iznimiz var ise; Doğru (true), yoksa Yanlış (false) sonucu döndürülür.

is_writable: Dosya yetkileri kontrol edilerek, dosyaya yazma iznimiz olup olmadığı kontrol edilebilir. Eğer dosyaya yazma iznimiz var ise; Doğru (true), yoksa Yanlış (false) sonucu döndürülür.

Örnek:

$dosya=”deneme.txt”;
if(file_exists($dosya))   
    {
    if(is_writable($dosya))
        {
        $f=fopen($dosya,”a”);
        fwrite($f,”\nYeni Eklenen Veri”);
        fclose($f);
        echo “Veri dosyaya yazıldı”;
        }
    else if(is_readable($dosya))
        {
        $f=fopen($dosya,”r”);
        $v=fread($f,”1000″);
        fclose($f);
        echo “Dosyadan okunan veri: “.$v;
        }
    else
        echo “Dosyayı okuma/yazma iznimiz bulunmamaktadır.”;
    }

Dosya İçinde Gezinme

fseek komutu, fopen ile açılan bir dosya içerisinde bulunulan konumdan istenilen başka bir konuma gitmeyi sağlar. Dosyadan veri okunduktan sonra, işaretçi yerinin değiştirilmesi için kullanılır.

Kullanımı:

fread($f,2600);

fseek($f,2790); //2600. baytta yer alan işaretçinin 2790. bayta ilerlemesini sağlar.

fseek($f,0); //2790. baytta yer alan işaretçinin dosya başına konumlandırılmasını sağlar.

Dosya Kapatma

PHP’de bir dosya ile işlem yapabilmek için dosyayı açmamız gerektiğini söylemiştik. Dosyayı açma işlemi bu dosyayı diğer paylaşımcıların erişimine karşı kilitleyeceği için kullanımımız sona erdikten sonra dosyayı kapatmamız gerekmektedir. Bunun için fclose komutunu kullanmalıyız.

Kullanım:

$f=fopen(“dosyayolu”,”r”);
fclose($f);

Diğer Dosya İşlemleri

touch: Bir dosyanın son erişim zamanının ayarlanmasını sağlar. Olmayan bir dosyanın oluşturulmasını sağlar. bool touch($dosyayolu);

unlink: Dosya silme işlemi yapar. bool unlink($dosyayolu);

file_get_contents: Dosya içeriğinin tamamını bir dizgiye aktarmayı sağlar. $veri=file_get_content($f);

Comments

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir