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.
$f=fopen(“dosyayolu/dosyaadi.uznt”,$acmasekli);
$acmasekli, fopen fonksiyonun dosya erişiminde kullanacağı yöntemi belirler.
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 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.
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.”;
}
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.
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);
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);
]]>