Bu dersimizde Php ile klasörler ve dosyalar üzerinde işlemlerin nasıl yapıldığını öğreneceğiz.

Dosya veya Klasör varmı yokmu kontrolü

Bir klasörün veya dosyanın var olup olmadığını kontrol eden fonksiyonumuz file_exists(), dosya varsa true/doğru, yoksa false/yanlış değerini döndürür.

Örnek:

<?php

$klasor_adi = "deneme";

if(file_exists($klasor_adi))
{
echo "Klasör var.";
}
else
{
echo "Klasör yok.";
}

?>

Bu kodları test ettiğiniz dizinde deneme isimli klasör varsa ekranda “Klasör var.” yoksa “Klasör yok.” yazacaktır. Aynı şekilde klasör yerine index.php gibi dosya ismini yazarsak varlığını kontrol edebiliriz.

Örnek:

<?php

$dosya_adi = "index.php";

if(file_exists($dosya_adi))
{
echo "Dosya var.";
}
else
{
echo "Dosya yok.";
}

?>

Dosya mı, dizin mi? is_file() ve is_dir()

Bazen dosyalar uzantısız şekilde klasör gibi adlandırılabilir. Bu gibi durumlarda sorguladığımız nesnenin klasörmü yoksa dosya mı olduğunu is_file() ve is_dir() fonksiyonları ile anlarız.

Örnek:

<?php

$dosya_veya_klasor_adi = "test";

if(is_file($dosya_veya_klasor_adi))
{
echo "Bu bir dosyadır!";
}

if(is_dir($dosya_veya_klasor_adi))
{
echo "Bu bir klasördür!";
}

?>

Üstteki kodları test ettiğimizde dizindeki test isimli nesnenin klasör mü yoksa dosya mı olduğu ekrana yazdırılacaktır.

Klasör oluşturma

Klasör oluşturma için mkdir() fonksiyonunu kullanılır. Oluşturulan Klasörün izin yetkisi parametre kısmında belirtilir. Varsayılan değer 0700‘dür.

Örnek:

<?php

$klasor_adi = "dosya";

if(file_exists($klasor_adi))
{
echo "Klasör zaten var!";
exit();//İşlemi durdur
}

$olustur = mkdir($klasor_adi, 0700);

if($olustur)
{
echo "Klasör oluşturuldu.";
}
else
{
echo "Klasör oluşturulamadı!";
}

?>

Örneğimizde Klasörün var olup olmadığını file_exists() ile kontrol ettik. Burada exit() adlı yeni bir fonksiyon kullandık. Kodlarda da belirttiğim gibi bu fonksiyonun görevi işlemi durdurmak, oluşturmak istenilen klasör adına sahip bir dosya varsa işlem durduruluyor. klasör daha önce oluşturulmuşsa ekrana “Klasör zaten var!” yazdırdık. Eğer klasör yoksa mkdir fonksiyonu ile oluşturmasını sağladık.
Son olarak klasörün oluşturulma durumunu ekrana yazdırdık.

Klasör silme

Klasör silmek için rmdir(“silinecek_klasor”) fonksiyonu kullanılır.

Örnek:

<?php

$klasor_adi = "test";

if(!file_exists($klasor_adi))
{
echo "Silinecek klasör yok!";
exit();//İşlemi durdur
}

$klasor_sil = rmdir($klasor_adi);

if($klasor_sil)
{

echo "Klasör silindi.";

}
else
{

echo "Klasör silinemedi!";

}

?>

Dosya oluşturma işlemi

Yeni bir dosya oluşturmak için Php’nin touch() fonksiyonu kullanılır.

Örnek:

<?php

$dosya_adi="dosya.txt";

if (file_exists($dosya_adi))
{
echo "Dosya zaten var!";
}
else

{
touch($dosya_adi);
echo "Dosya oluşturuldu.";
}

?>

Dosyaya veri yazdırma

Dosyayı açmak için fopen(), veri yazdırma işlemi için fwrite() ve dosya ile işimiz bittiğinde kapatma işlemi için fclose() fonksiyonu kullanılır.

Örnek:

<?php

$dosya = "dosya.txt";

$dosya=fopen($dosya,"a");

$veri_yazdir="deneme123 ";

fwrite($dosya, $veri_yazdir);

echo "veri yazdırıldı.";

fclose($dosya);

?>

Dosyadan veri okuma

Dosyadan veri okumak için öncelikle fopen() fonksiyonu ile dosyamızı açarız. fopen() fonksiyonunda ilk parametrede dosya yolu, ikinci parametrede dosyaya erişim izni belirtilir.  Son olarak while döngüsü yardımı ile txt dosyasındaki veriler ekrana yazdırılır.

fopen() Fonksiyonunda Kullanılan Parametreler

r Sadece okuma işlemleri için erişim sağlar. İmleç dosyanın başına taşınır.

r+ Okuma ve yazma işlemleri için erişim sağlar. İmleç dosyanın başına taşınır.

w Sadece yazmak için erişim sağlar. Eğer dosya yoksa yeni bir dosya oluşturur ve dosyada veri varsa sıfırlar. İmleç dosyanın başına taşınır.

w+ Okuma ve yazma işlemi için erişim sağlar. Eğer dosya yoksa yeni bir dosya oluşturur ve dosyada veri varsa sıfırlar. İmleç dosyanın başına taşınır.

a Sadece yazma işlemi için erişim sağlar. Eğer dosya yoksa yeni bir dosya oluşturur. İmleç dosyanın sonuna taşınır.

a+ Okuma ve yazma işlemi için erişim sağlar. Eğer dosya yoksa yeni bir dosya oluşturur.  İmleç dosyanın sonuna taşınır.

x Dosya mevcut değilse oluşturulur ve sadece yazmak için erişim sağlar. Dosya mevcutsa FALSE döndürür. İmleç dosyanın başına taşınır.

x+ Dosya mevcut değilse oluşturulur. Okuma ve yazma işlemleri için erişim sağlar. Dosya mevcutsa FALSE döndürür. İmleç dosyanın başına taşınır.


<?php
$dosya = fopen("dosya.txt","r");

if(!($dosya))
{
echo "dosya.txt bulunamadı.";
exit();
}

while(!feof($dosya))
{
$satir = fgets($dosya, 255);
echo("$satir");
}

fclose($dosya);
?>

Dosya silme

Varolan bir dosyayı silmek için unlink($silinecek_dosya) fonksiyonu kullanılır.

Örnek:

<?php

$dosya_adi="dosya.txt";

if(!file_exists($dosya_adi))
{
echo "Silinecek dosya yok!";
exit();//İşlemi durdur
}

unlink($dosya_adi);
echo "Dosya silindi.";

?>

Dizindeki dosya ve klasörleri listeleme

Dizindeki içeriği açmak için opendir(), okuma işlemi için readdir() ve ekranda görüntüleme için readdir() fonksiyonları kullanılır. Listeleme işlemi için while döngüsünü kullandık.

Örnek:

<?php

$dizin_adi = ".";

$dizin = opendir($dizin_adi);

while(gettype($ad=readdir($dizin))!=boolean)
{

echo "$dizin_adi/$ad<br>";

}

closedir($dizin);

?>

Makalenin çalışma dosyalarına http://www.celalyurtcu.com/dosyalar/klasor-ve-dosya-islemleri.zip adresinden ulaşabilirsiniz.