The FilesystemIterator class

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

简介

The Filesystem iterator

类摘要

FilesystemIterator extends DirectoryIterator implements SeekableIterator {
/* 常量 */
const int CURRENT_AS_PATHNAME = 32 ;
const int CURRENT_AS_FILEINFO = 0 ;
const int CURRENT_AS_SELF = 16 ;
const int CURRENT_MODE_MASK = 240 ;
const int KEY_AS_PATHNAME = 0 ;
const int KEY_AS_FILENAME = 256 ;
const int FOLLOW_SYMLINKS = 512 ;
const int KEY_MODE_MASK = 3840 ;
const int NEW_CURRENT_AND_KEY = 256 ;
const int SKIP_DOTS = 4096 ;
const int UNIX_PATHS = 8192 ;
/* 方法 */
public __construct ( string $path , int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS )
public current ( ) : mixed
public getFlags ( ) : int
public key ( ) : string
public next ( ) : void
public rewind ( ) : void
public setFlags ( int $flags = ? ) : void
/* 继承的方法 */
public DirectoryIterator::getATime ( ) : int
public DirectoryIterator::getBasename ( string $suffix = ? ) : string
public DirectoryIterator::getCTime ( ) : int
public DirectoryIterator::getExtension ( ) : string
public DirectoryIterator::getFilename ( ) : string
public DirectoryIterator::getGroup ( ) : int
public DirectoryIterator::getInode ( ) : int
public DirectoryIterator::getMTime ( ) : int
public DirectoryIterator::getOwner ( ) : int
public DirectoryIterator::getPath ( ) : string
public DirectoryIterator::getPathname ( ) : string
public DirectoryIterator::getPerms ( ) : int
public DirectoryIterator::getSize ( ) : int
public DirectoryIterator::getType ( ) : string
public DirectoryIterator::isDir ( ) : bool
public DirectoryIterator::isDot ( ) : bool
public DirectoryIterator::isFile ( ) : bool
public DirectoryIterator::isLink ( ) : bool
public DirectoryIterator::key ( ) : string
public DirectoryIterator::next ( ) : void
public DirectoryIterator::rewind ( ) : void
public DirectoryIterator::seek ( int $position ) : void
public DirectoryIterator::__toString ( ) : string
public DirectoryIterator::valid ( ) : bool
}

预定义常量

FilesystemIterator::CURRENT_AS_PATHNAME

Makes FilesystemIterator::current() return the pathname.

FilesystemIterator::CURRENT_AS_FILEINFO

Makes FilesystemIterator::current() return an SplFileInfo instance.

FilesystemIterator::CURRENT_AS_SELF

Makes FilesystemIterator::current() return $this (the FilesystemIterator).

FilesystemIterator::CURRENT_MODE_MASK

Masks FilesystemIterator::current()

FilesystemIterator::KEY_AS_PATHNAME

Makes FilesystemIterator::key() return the pathname.

FilesystemIterator::KEY_AS_FILENAME

Makes FilesystemIterator::key() return the filename.

Makes RecursiveDirectoryIterator::hasChildren() follow symlinks.

FilesystemIterator::KEY_MODE_MASK

Masks FilesystemIterator::key()

FilesystemIterator::NEW_CURRENT_AND_KEY

Same as FilesystemIterator::KEY_AS_FILENAME | FilesystemIterator::CURRENT_AS_FILEINFO.

FilesystemIterator::SKIP_DOTS

Skips dot files (. and ..).

FilesystemIterator::UNIX_PATHS

Makes paths use Unix-style forward slash irrespective of system default. Note that the path that is passed to the constructor is not modified.

Table of Contents

User Contributed Notes

ohcc at 163 dot com 09-Jun-2020 03:31
It's impossible to return dots (. and ..) by FilesystemIterator.
thedilab at gmail dot com 06-Oct-2015 03:13
DirectoryIterator returns virtual directories "." and ".." in a loop.
But FilesystemIterator ignores them.
paul at paulgarvin dot net 10-May-2014 03:08
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.