RSS

PHP dizin işlemleri

13 16 Haziran 2010 ~ Musa Avcı — Orta

PHP ile dizin işlemleri sayesinde yeni dizinler oluşturabilir, dizinleri taşıyabilir, yeniden adlandırabilir, silebilir ve içinde neler olduğunu gösterebiliriz.

Web tabanlı dosya yöneticisi gibi bir yazılım yapmak ya da dosya upload çalışmalarına girişmek için öğrenmemiz gereken konulardan bir tanesi olan dizin işlemleri sayesinde tüm dosya yönetimi olaylarına el atmış bulunuyoruz.

Dosya işlevlerinde olduğu gibi dizin işlemlerinde de çoğu çalışmayı fonksiyonlar ile yapacağız. Bir önceki derste anlattığım gibi dizin olayları için de izin ve yetkiye ihtiyacımız olacak.

PHP ile bir dizin oluşturmak

Yeni bir klasör oluşturmak şeklinde de değerlendirebileceğimiz bu olayı mkdir() fonksiyonu sayesinde gerçekleştiririz. Bir parametre ile çalışır, ama eğer istersen 2. parametre ile dosya CHMOD değerini belirtebilirsin.

mkdir('merhaba');

Yukarıdaki örneği çalıştırdığımızda çalıştırdığımız dizinin içerisinde merhaba adında yeni bir klasör oluşturmuş oluruz.

Eğer oluşturacağımız yeni dizinin CHMOD değerinide ifade etmek isteyecek olursak 2. parametreyi devreye sokuyoruz.

2. Parametreyi kullanmazsak varsayılan değeri “0777” yani tüm izinleri verilmiş durumda olur.

mkdir('yenidizin', '0655');

Bu örnekte de yenidizin adında bir dizin oluşturup 0655 CHMOD değeri vererek yazma iznini iptal etmiş olduk.

PHP ile bir dizini silmek

Varolan dizinleri silmek için rmdir() fonksiyonunu kullanırız. Bu fonksiyon ile sileceğimiz dizininin içerisi boş olmak zorundadır. Eğer dolu bir dizini bu şekilde silmeye kalkışırsak PHP kızıp hata gösterecektir.

Dolu bir dizini olduğu gibi silmek istiyorsak eğer, o zaman önce diğer dersde anlattığımız unlink() fonksiyonunu kullanarak tüm içeriği silmemiz gerekecek.

rmdir('merhaba');

Bu örnek çalıştığında merhaba adında bir dizin kalmamış olur.

PHP ile dizinlerin ya da dosyaların adını değiştirme ve taşıma

Aslında dizinlerin ya da dosyaların adını değiştirmek ile taşımak aynı şey diyebiliriz. Garip gelsede ismini değiştirdiğinizde aslında onu bir nevi taşımış olursunuz.

Bu işi rename() fonksiyonu ile gerçekleştireceğiz. İki parametre ile çalışan bu fonksiyonun ilk parametresine taşıyacağımız ya da değiştireceğimiz, dosya ya da dizin adın, ikinci parametreye ise taşıyacağımız yolu yazarız.

rename('eski', 'yeni');

Yukarıdaki örnek çalıştığında eski adında klasörü yeni adında değiştirir.

Aynı şekilde dizin yerine bir dosya uzantısı ve adı belirttiğimizde bu sefer değiştirme işini dosya üzerinde yapacaktır.

rename('resim.jpg', 'manzara.jpg');

Bu çalışmada da resim.jpg adındaki dosyamızın adını manzara.jpg olarak değiştirecektir.

Yine benzer şekilde ikinci parametrede farklı bir dizin belirttiğimizde dosyayı o dizine taşıyacaktır.

rename('resim/bir.jpg', 'manzaralar/resim.jpg');

Burada resim klasörü içindeki bir.jpg dosyasını manzaralar klasörüne taşıyıp adını resim.jpg olarak değiştirmiş olduk.

PHP ile dizin içerisindekileri okuma

Bir dizinin içerisinde bulunan tüm dosyaları listelemek için iki fonksiyona ve bir while döngüsüne ihtiyacımız var.

İlk olarak opendir() fonksiyonu ile aynı fopen() ile dosya açmadaki mantık gibi dizini açarız. Ardından dizini bağlantısını yüklediğimiz değişkeni readdir() fonksiyonu ve while döngüsü ile bağlayıp tüm dizinin içeriğine ulaşırız.

$dizin = opendir('dosyalar');
while($dosya = readdir($dizin)) {
   echo $dosya . ' <br/>';
}

Burada dikkatinizi çekecek mevzu while döngüsü içinde kullandığım koşul olabilir. Tek eşittir işareti kullandığımız bu koşulda amaç diğer koşullara göre farklıdır.

Bu özel yöntem sayesinde döngü tüm dizindeki dosyaları sayana kadar tek tek dönecektir.

Ekranda da dosyalar dizininin içeriğine göre dosya adları sırayla yazacaktır.

Örneğin içinde resim.jpg, dosya.rar ve müzik.mp3 dosyası olan dosyalar dizininde ekrandaki çıktı:

.
..
resim.jpg
dosya.rar
müzik.mp3

Şeklinde olacaktır. Burada ilk çıkan . ve .. işaretleri bir alt dizini ve şuanki dizini ifade eder. İstersen o işaretleri bir if ifadesi ile saf dışı bırakıp sadece içeriğe ulaşabilirsin.

Bir sonraki PHP serüvenlerinde görüşmek üzere esen kalın.

Etiketler:

Yazılanlar ilgini çektiyse, yenilerinden haberdar olmak için e-mail bültenine abone olabilirsin.

"PHP dizin işlemleri" yazısı için 13 yorum yapılmış.

  1. […] PHP ile dizin işlevleri. […]

  2. 0Derece dedi ki:

    Sanırım o kadar anlatımın içinde başka bir dizindeki klasöre nasıl işlem yapacağımızı anlatan sizsiniz 😀 çok teşekkür ederim

  3. […] PHP değişkenleri, sabitleri ve dizinleri. […]

  4. Kaan dedi ki:

    Saol Hocam Anlatım İÇin Ama Bunlar Heralde .ssh Yönetimi İle Yapılan Şeyler Değil mi ?

  5. soner dedi ki:

    kodları göremiyorum dersleri nereden görebilirim

  6. Caner Alptekin dedi ki:

    Çok güzel ve başarılı bir anlarım, teşekkür ederim. Sayenizde bir nebze de olsa bilgilerimi arttırdım …

  7. Burak dedi ki:

    Kolay gelsin çok başarılı bir anlatım olmuş tebrik ederim ben resim galerisi için her kategori için yeni dosya oluşturmayı başardım ancak tr karakter problemi oluşuyor dosya isimlerinde bunu nasıl çözümleyebilirim

  8. eşem dedi ki:

    bana php de dosya yöneticisi yapmak için acil yardım lazım cumrtesiye kadar çok az php -veritabanı bilgim var yardımcı olursanız sevnirim birinin bna yardım etmesi lazım acil cvp bekliyorum

  9. Pars dedi ki:

    Bu güzel ve yararlı çalışma için tekrar teşekkürler. Ben yeni bir dosya yada klasör oluşturduğumuzda dosya ya da klasörün hangi dizin altında oluştuğunu öğrenmek istiyorum. Pardus kullanıyorum. Tekrar teşekkürler.

  10. HAKAN ATALAY dedi ki:

    yazınız için teşekkürker. içeriğini listelemek istediğim klasör aynı ağda veya etki alanında başka bir bilgisayardaki paylaşıma açık bir klasör olabilir mi? olabiliyorsa, kodu nasıl yazabiliriz?

  11. boibo dedi ki:

    Klasör oluştururken türkçe karakter kullanamıyorum. ne yapmam lazım saygılar…

  12. mert dedi ki:

    if ifadesi ile bağzı işaretleri yok etmeyi söylemişsiniz nasıl kullanılacak bu ifade

Bir cevap yazın

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