2009年3月24日火曜日

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

  1. function GetPath($path) {  
  2. $dirIterator = new RecursiveDirectoryIterator($path);  
  3. $tmptime = 0;  
  4. // サブフォルダ内も含めたファイル分回す  
  5. foreach ( $iterator = new RecursiveIteratorIterator($dirIterator, RecursiveIteratorIterator::SELF_FIRST) as $file){  
  6. $space = str_repeat(" "$iterator->getDepth());  
  7. $filename = $file->getFilename();  
  8. if ($file->isDir()) {  
  9. // ディレクトリ表示  
  10. echo $space . "Dir:" . $filename;  
  11. // ファイル  
  12. else {  
  13. // ファイル表示  
  14. echo $space . "File:" . $filename;  
  15. }  
  16. // 階層  
  17. echo "【" . $iterator->getDepth() . "階層目】";  
  18. // 最終修正時刻  
  19. echo "【" . date("Y/m/d H:i:s"$file->getMTime()) . "】" . PHP_EOL;  
  20. }  
  21. }  
  22. GetPath('D:\\logs\\');  

参考URL
http://dozo.matrix.jp/spl/directoryiterator
http://dozo.matrix.jp/spl/directoryiterator/recursive
DirectoryIterator ファイル・ディレクトリ制御クラスライブラリ メソッド
メソッド 概要
DirectoryIterator::__constructパスから新規ディレクトリイテレータを生成する
DirectoryIterator::currentこれ自身を返す (Iterator インターフェースが必要)
DirectoryIterator::getATimeファイルの最終アクセス時刻を取得する
DirectoryIterator::getCTimeファイルの inode 修正時刻を取得する
DirectoryIterator::getFilename現在のディレクトリエントリのファイル名を返す
DirectoryIterator::getGroupファイルのグループを取得する
DirectoryIterator::getInodeファイルの inode を取得する
DirectoryIterator::getMTimeファイルの最終修正時刻を取得する
DirectoryIterator::getOwnerファイルの所有者を取得する
DirectoryIterator::getPathディレクトリパスを返す
DirectoryIterator::getPathname現在のディレクトリエントリのパスとファイル名を返す
DirectoryIterator::getPermsファイルのパーミッションを取得する
DirectoryIterator::getSizeファイルサイズを取得する
DirectoryIterator::getTypeファイルタイプを取得する
DirectoryIterator::isDirファイルがディレクトリであれば true を返す
DirectoryIterator::isDot現在のエントリが '.' もしくは '..' の場合 true を返す
DirectoryIterator::isExecutableファイルが実行可能な場合 true を返す
DirectoryIterator::isFileファイルが通常のファイルの場合 true を返す
DirectoryIterator::isLinkファイルがシンボリックリンクの場合 true を返す
DirectoryIterator::isReadableファイルが読込可能であれば true を返す
DirectoryIterator::isWritableファイルが書き込み可能であれば true を返す
DirectoryIterator::key現在のディレクトリエントリを返す
DirectoryIterator::next次のエントリに移動する
DirectoryIterator::rewindディレクトリを最初に巻き戻す
DirectoryIterator::validディレクトリがまだエントリを持っているかどうかチェックする


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

DirectoryIteratorはRecursiveDirectoryIteratorの親クラス

免責
この記事やプログラムによって生じた事故・損害などは一切保証致しません。ご自身の責任でご使用ください。

子育てブログ「おとう日記」はじめました。
興味ある方、是非ご覧下さい!
おとう日記

コピペプログラマの倉庫を作りました。
サンプルプログラムなど置いておきますのでお立ち寄り下さい。
コピペプログラマ倉庫


良ければ↓投票お願いします↓ m(._.)m ペコッ
人気ブログランキングへ

0 件のコメント:

コメントを投稿