FilesystemIterator クラス

(PHP 5 >= 5.3.0, PHP 7)

はじめに

Filesystem イテレータです。

クラス概要

FilesystemIterator extends DirectoryIterator implements SeekableIterator {
/* 定数 */
const integer CURRENT_AS_PATHNAME = 32 ;
const integer CURRENT_AS_FILEINFO = 0 ;
const integer CURRENT_AS_SELF = 16 ;
const integer CURRENT_MODE_MASK = 240 ;
const integer KEY_AS_PATHNAME = 0 ;
const integer KEY_AS_FILENAME = 256 ;
const integer FOLLOW_SYMLINKS = 512 ;
const integer KEY_MODE_MASK = 3840 ;
const integer NEW_CURRENT_AND_KEY = 256 ;
const integer SKIP_DOTS = 4096 ;
const integer UNIX_PATHS = 8192 ;
/* メソッド */
public __construct ( string $path [, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS ] )
public mixed current ( void )
public int getFlags ( void )
public string key ( void )
public void next ( void )
public void rewind ( void )
public void setFlags ([ int $flags ] )
/* 継承したメソッド */
public DirectoryIterator DirectoryIterator::current ( void )
public int DirectoryIterator::getATime ( void )
public string DirectoryIterator::getBasename ([ string $suffix ] )
public int DirectoryIterator::getCTime ( void )
public string DirectoryIterator::getExtension ( void )
public string DirectoryIterator::getFilename ( void )
public int DirectoryIterator::getGroup ( void )
public int DirectoryIterator::getInode ( void )
public int DirectoryIterator::getMTime ( void )
public int DirectoryIterator::getOwner ( void )
public string DirectoryIterator::getPath ( void )
public string DirectoryIterator::getPathname ( void )
public int DirectoryIterator::getPerms ( void )
public int DirectoryIterator::getSize ( void )
public string DirectoryIterator::getType ( void )
public bool DirectoryIterator::isDir ( void )
public bool DirectoryIterator::isDot ( void )
public bool DirectoryIterator::isExecutable ( void )
public bool DirectoryIterator::isFile ( void )
public bool DirectoryIterator::isLink ( void )
public bool DirectoryIterator::isReadable ( void )
public bool DirectoryIterator::isWritable ( void )
public string DirectoryIterator::key ( void )
public void DirectoryIterator::next ( void )
public void DirectoryIterator::rewind ( void )
public void DirectoryIterator::seek ( int $position )
public string DirectoryIterator::__toString ( void )
public bool DirectoryIterator::valid ( void )
}

定義済み定数

FilesystemIterator::CURRENT_AS_PATHNAME

FilesystemIterator::current() がパス名を返すようにします。

FilesystemIterator::CURRENT_AS_FILEINFO

FilesystemIterator::current()SplFileInfo のインスタンスを返すようにします。

FilesystemIterator::CURRENT_AS_SELF

FilesystemIterator::current() が $this (FilesystemIterator) を返すようにします。

FilesystemIterator::CURRENT_MODE_MASK

FilesystemIterator::current() をマスクします。

FilesystemIterator::KEY_AS_PATHNAME

FilesystemIterator::key() がパス名を返すようにします。

FilesystemIterator::KEY_AS_FILENAME

FilesystemIterator::key() がファイル名を返すようにします。

RecursiveDirectoryIterator::hasChildren() がシンボリックリンクのリンク先をたどるようにします。

FilesystemIterator::KEY_MODE_MASK

FilesystemIterator::key() をマスクします。

FilesystemIterator::NEW_CURRENT_AND_KEY

FilesystemIterator::KEY_AS_FILENAME | FilesystemIterator::CURRENT_AS_FILEINFO と同じ。

FilesystemIterator::SKIP_DOTS

ドットファイル (. および ..) をスキップします。

FilesystemIterator::UNIX_PATHS

システムのデフォルトにかかわらず、Unix スタイルのスラッシュでパスをあらわすようにします。 コンストラクタから渡された path は変更されないことに注意しましょう。

変更履歴

バージョン 説明
5.3.1 FilesystemIterator::FOLLOW_SYMLINKS が追加されました。

目次

add a note add a note

User Contributed Notes 3 notes

up
40
paul at paulgarvin dot net
3 years ago
You may be wondering, like I did, what is the difference between this class and DirectoryIterator?

When you iteterate using DirectoryIterator each "value" returned is the same DirectoryIterator object. The internal state is changed so when you call isDir(), getPathname(), etc the correct information is returned. If you were to ask for a key when iterating you will get an integer index value.

FilesystemIterator (and RecursiveDirectoryIterator) on the other hand returns a new, different SplFileInfo object for each iteration step. The key is the full pathname of the file. This is by default. You can change what is returned for the key or value using the "flags" arguement to the constructor.
up
6
thedilab at gmail dot com
2 years ago
DirectoryIterator returns virtual directories "." and ".." in a loop.
But FilesystemIterator ignores them.
up
-8
martinelli dot igor at hotmail dot com
7 months ago
<?php

// Simple way to get all files in a directory
$files = new FilesystemIterator('/home/user/folder/');
foreach(
$files as $file)
{
    echo
$file->getFilename() . '<br>\n';
}

?>
To Top