• []
  • []
  •  
  • del.icio.us 
  •  
  • Yahoo!֥åޡϿ 

RecursiveDirectoryIterator 再帰型ファイル・ディレクトリ制御

PHP 求人 募集 Symfony CakePHP Smarty Ruby on Rails

RecursiveDirectoryIterator 再帰型ファイル・ディレクトリ制御 概要

ディレクトリ構造はスレッド型になっているので、
すべてチェックしようとすると再帰呼び出しは必須となる。
それほど苦ではないが、
もっと簡単な方法があるならそれに越したことはないだろう。

それを簡単にしてくれるのが
RecursiveDirectoryIterator

RecursiveDirectoryIterator 再帰型ファイル・ディレクトリ制御 詳細

DirectoryIteratorのサンプルと同じ条件で使ってみると

RecursiveDirectoryIterator 再帰型ファイル・ディレクトリ制御 サンプル

<?php
$path = ".";
try{
  $dirIterator = new RecursiveDirectoryIterator($path);
  foreach ( $iterator = new RecursiveIteratorIterator($dirIterator 
            , RecursiveIteratorIterator::SELF_FIRST) as $file){
    echo str_repeat(" ", $iterator->getDepth());
    if( $file->isDir() ) // is directory
      echo $file->getFilename()."/\n";
    else  // is file
      echo $file->getFilename()."\n";
  }
 
//    ReflectionObject::export( $iterator );
//    ReflectionClass::export('RecursiveIteratorIterator');
 
}catch( Exception $errorObj ){
  echo $errorObj->getMessage();
}

結果

.htaccess
attic/
 _dummy
cache/
 _dummy
index/
 _dummy
locks/
 _dummy
media/
 wiki/
  dokuwiki-128.png
meta/
 _dummy
pages/
 playground/
  playground.txt
 wiki/
  dokuwiki.txt
  syntax.txt
RecursiveDirectoryIterator.php

RecursiveDirectoryIterator 再帰型ファイル・ディレクトリ制御 メソッド

メソッド概要
RecursiveDirectoryIterator::getChildrenディレクトリであれば、現在のエントリに対するイテレータを返す
RecursiveDirectoryIterator::hasChildren現在のエントリがディレクトリかつ '.' もしくは '..' でないかどうかを返す
RecursiveDirectoryIterator::key現在のディレクトリエントリのパスとファイル名を返す
RecursiveDirectoryIterator::next次のエントリに移動する
RecursiveDirectoryIterator::rewindディレクトリを最初に巻き戻す

DirectoryIteratorはRecursiveDirectoryIteratorの親クラス


spl/directoryiterator/recursive.txt · 最終更新: 2008/02/24 20:22 by dozo