php文件系统迭代器--FilesystemIterator

2021-03-23

文件系统迭代器,继承DirectoryIterator,DirectoryIterator的方法都可用

创建文件迭代器

$flags = [ // 多个flag用|连接使用
    FilesystemIterator::CURRENT_AS_PATHNAME, // 使FilesystemIterator::current()返回路径名。
    FilesystemIterator::CURRENT_AS_FILEINFO, // 使FilesystemIterator::current()返回一个SplFileInfo实例。
    FilesystemIterator::CURRENT_AS_SELF,     // 使FilesystemIterator::current()返回$this(FilesystemIterator)。
    FilesystemIterator::KEY_AS_PATHNAME,     // 使FilesystemIterator::key()返回路径名。
    FilesystemIterator::KEY_AS_FILENAME,     // 使FilesystemIterator::key()返回文件名。
    FilesystemIterator::FOLLOW_SYMLINKS,     // 使RecursiveDirectoryIterator::hasChildren()跟随符号链接。
    FilesystemIterator::NEW_CURRENT_AND_KEY, // 与FilesystemIterator::KEY_AS_FILENAME | FilesystemIterator::CURRENT_AS_FILEINFO相同。
    FilesystemIterator::SKIP_DOTS,           // 跳过点文件(。和. .)。必须设置
    FilesystemIterator::UNIX_PATHS,          // 获取到的路径使用unix风格的正斜杠
];
// 根据$path创建一个文件系统迭代器,$flag可以影响某些方法的行为
$filesystemIterator = new FilesystemIterator($path, $flag = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS);

迭代

// 获取迭代器当前值
$filesystemIterator->current();

// 获取当前文件在迭代器中的索引
$filesystemIterator->key();

// 将迭代器前进一项
$filesystemIterator->next();

// 将迭代器倒回开头
$filesystemIterator->rewind();

标志设置与获取

// 设置迭代器的标志
$filesystemIterator->setFlags($flags);

// 获取迭代器设置的标志
$filesystemIterator->getFlags();

 

{/if}