文件系统迭代器,继承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();