Verzeichnisse (rekursiv) auslesen mit den Iteratoren der SPL

Flattr this
Tweet this: Verzeichnisse (rekursiv) auslesen mit den Iteratoren der SPL
Dent this: Verzeichnisse (rekursiv) auslesen mit den Iteratoren der SPL
Die folgenden Code-Beispiele sollen zeigen wie man in PHP mit Hilfe der Iteratoren der SPL (DirectoryIterator, RecursiveDirectoryIterator und RecursiveIteratorIterator) Verzeichnisse auslesen kann.
<?php
/**
 * vorhandene Verzeichnisstruktur:
 *
 * + files
 *   + dir 1
 *     + dir 1.1
 *       + file1
 *       + file2
 *     + file1
 *     + file2
 *   + dir 2
 *     + dir 2.1
 *       + file1
 *       + file2
 *     + dir 2.2
 *       + file1
 *       + file2
 */



echo 'Dateien: ' . PHP_EOL;
$iterator = new DirectoryIterator('./files');
foreach($iterator as $element) {
    if ($element->isFile()) {
        echo $element->getFilename() . PHP_EOL;
    }
}

// iterator wieder zurücksetzen
$iterator->rewind();

echo PHP_EOL . PHP_EOL . 'Verzeichnisse: ' . PHP_EOL;

// Verzeichnisse aus Verzeichnis auflisten
foreach($iterator as $element) {
    if ($element->isDir()) {
        echo $element->getFilename() . PHP_EOL;
    }
}

echo PHP_EOL . PHP_EOL . 'Rekursive Verzeichnisse: ' . PHP_EOL;

$recursiveIterator = new RecursiveDirectoryIterator('./files');
$recursiverecursiveIterator = new RecursiveIteratorIterator($recursiveIterator,
                                         RecursiveIteratorIterator::SELF_FIRST);

foreach($recursiverecursiveIterator as $element) {
    if ($element->isDir()) {
        $depth = $recursiverecursiveIterator->getDepth();
        echo str_repeat('  ', $depth);
        echo $element->getFilename() . PHP_EOL;
    }
}

// iteratoren zurücksetzen
$recursiveIterator->rewind();
$recursiverecursiveIterator->rewind();

echo PHP_EOL . PHP_EOL . 
     'Rekursive Struktur mit Verzeichnissen und DateienVerzeichnisse:' . 
     PHP_EOL;
foreach($recursiverecursiveIterator as $element) {
    if ($element->isDir() || $element->isFile()) {
        $depth = $recursiverecursiveIterator->getDepth();
        echo str_repeat('  ', $depth);
        echo '[' . strtoupper($element->getType()) . '] ';
        echo $element->getFilename() . PHP_EOL;
    }
}

/**
 * Komplette Ausgabe des Scripts:

Verzeichnisse:
dir 1
.
dir 2
..


Rekursive Verzeichnisse:
dir 1
  dir 1.1
dir 2
  dir 2.2
  dir 2.1


Rekursive Struktur mit Verzeichnissen und DateienVerzeichnisse:
[DIR] dir 1
  [FILE] file2
  [FILE] file1
  [DIR] dir 1.1
    [FILE] file2
    [FILE] file1
[DIR] dir 2
  [FILE] file2
  [DIR] dir 2.2
    [FILE] file2
    [FILE] file1
  [FILE] file1
  [DIR] dir 2.1
    [FILE] file2
    [FILE] file1
 */

Trackbacks (0)

Trackbackurl: http://www.robo47.net/trackback/snippet/1

Es sind keine Trackbacks vorhanden.


Kommentare (0)

Es sind noch keine Kommentare vorhanden.

Die Kommentare zu diesem Beitrag sind gesperrt.

You liked it ? Link it on your homepage or blog: