Php ile Klasör ve Dosya İşlemleri
Php 30 Ekim 2009Bu 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.
Etiketler: dizindeki klasör ve dosyaları listeleme, dosya oluşturma, dosya silme, dosya varmı yokmu, dosyamı dizin mi, dosyaya veri yazdırma, klasör oluşturma, klasör silme, klasör ve dosya işlemleri, Php
İlgili Makaleler
5.783 defa okundu
Yazdır
Bu yazıya yapılan yorumları dilerseniz, RSS 2.0 beslemesini kullanarak takip edebilirsiniz.













14 Mart 2010 11:13
mrb lar;
<?php
$dizin_adi = "toplu_mail";
$dizin = opendir($dizin_adi);
while(gettype($ad=readdir($dizin))!=boolean)
{
echo "$dizin_adi/$ad”;
}
closedir($dizin);
?>
dizinleri listeliyorum fakat ekranda şöyle bir hata alıyorum
Notice: Use of undefined constant boolean – assumed ‘boolean’ in D:\Projeler\SERVER\Root\denemeler\dizindeki-tum-dosyalari-listele.php on line 10
toplu_mail/bg.png
26 Mart 2010 11:02
teşekkür ederim işime çok yaradı. kolay gelsin
8 Ağustos 2010 01:21
@murat
“$dizin_adi/$ad”;
ifadesindeki son tırnağı farklı bir karakter ile yapmışsın bu yüzden hata veriyor
23 Nisan 2011 20:30
Ben de dosyalama ile ilgili bir yazı yazmayı düşünüyordum ve biraz araştırayım dedim. Çok güzel yazmışsınız, yazımı şekillendirmeme yardımcı oldunuz. Teşekkürler iyi çalışmalar.
24 Nisan 2011 22:25
[...] tabloyu Celal Yurtçu‘nun sitesinde de bulabilirsiniz. Aşağıda dosya açma fonksiyonu ve parametreleri [...]
19 Mayıs 2011 11:31
Allah Razı Olsun Süper:)
30 Mayıs 2011 23:31
teşekkürler çok güzel anlatım olmuş ellerinize sağlık
28 Kasım 2011 18:10
Makale için teşekkürler.
Lâkin,
r+ ile imleci dosya başına getirebilmeyi başarabilen var mı?
Yapmak istediğim, örneğin log tutuyorsunuz.. Ama sürekli alta doğru ekliyor, olmasını istediğim a,b,c,d diye gitmesi değil, ilk, a’yı ekledikten sonra b’yi ekleyecekse ve devam edecekse d,c,b,a olarak gitmesi.. Mümkün müdür? İmleç her kayıttan sonra sayfanın başına dönecek?.. Teşekkürler
11 Nisan 2012 13:56
Süper bir makale parmaklarınıza sağlık.