İçeriğe geç →

Php’de Dizin işlemleri

DirectoryIterator ile php de dizin işlemleri bihayli basit.Çok kullanışlı DirectoryIterator nesnesini tanıyalım.Aslında bu yazıyı yazmamın sebebi eski php yazılarıdır.

The DirectoryIterator class’ı dizinimizdeki tüm dosya ve dizinlere kolayca ulaşmamızı sağlar.

DirectoryIterator

  • public __construct ( string $path ) // yeni bir DirectoryIterator nesnesi oluşturmak için dizin ismini ister.
  • public getExtension ( void ) : string // Dosyanın uzantısını getirir.
  • public getFilename ( void ) : string // Dosya ismini getirir.
  • public isDir ( void ) : bool // varolan dosya dizin mi diye kontrol eder.
  • public isFile ( void ) : bool // varolan dosya bir dosya mı diye kontrol eder.
  • public isReadable ( void ) : bool // okunabilirmi diye kontrol eder.
  • public isWritable ( void ) : bool // yazılabilirmi diye kontrol eder.

Daha fazla detay için :

https://www.php.net/manual/en/class.directoryiterator.php

Küçük bir örnek ile pekiştirelim.

Örnek :

Senaryo : Varolan dizindeki tüm dizinleri ve o dizine bağlı alt dizinleri ve dosyaları listelemek istersek.

// VAROLAN DIZINI CONSTRUCTOR NESNESINE VER.
$directories = new DirectoryIterator(__DIR__);

foreach ($directories as $directory) {

    // eğer dizin nokta ise devam et
    if ($directory->isDot()) continue;

    // Dizin ismini ekrana bas
    echo $directory . PHP_EOL;

    // EĞER DÖNGÜDEN GELEN DOSYA DIRECTORY İSE
    if ($directory->isDir()) {

        // O ALANDAKI TÜM DOSYALARI GETİR
        $chilDirectories = new DirectoryIterator(__DIR__ . '/' . $directory);

        // CHİLD DIRECTORYLERDE DÖN
        foreach ($chilDirectories as $dir) {
            if ($directory->isDot()) continue;
            // EĞER DOSYA İSE
            else if ($dir->isFile()) {
                // DOSYANIN İSMİNİ , BOYUTUNU , DOSYA UZANTISINI YAZ
                echo "--" . $dir->getFilename() . "--- Size : " . $dir->getSize() . ' Extension :' . $dir->getExtension() . PHP_EOL;

            }
        }
    }

}

Kategori: php

Tek Yorum

  1. recursive versiyonundan bahsetmemişsin ama oda çok iş görüyor murat 🙂 Senin son örneğinde klasörün içinde bir klasör daha olsa sıkıntıya girer örneğin, o gibi durumlarda şöyle kullanılabilir;

    $directory = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__), RecursiveIteratorIterator::SELF_FIRST);

    foreach ($directory as $value){
    echo $value . ”;
    }

Bir cevap yazın

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