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/1Es sind keine Trackbacks vorhanden.
You liked it ? Link it on your homepage or blog:



Benjamin Steininger ist Webentwickler auf der Suche nach einem neuen Job und
photographiert sehr gerne. Er beschäftigt sich viel mit dem Internet, PHP, Symfony, Testing und hat einen
Kommentare (0)
Es sind noch keine Kommentare vorhanden.
Die Kommentare zu diesem Beitrag sind gesperrt.