如何使用QDirIterator只遍历特定类型的文件

How to iterate through only certain type of files using QDirIterator

本文关键字:类型 文件 遍历 何使用 QDirIterator      更新时间:2023-10-16

我只想遍历.xml文件(所选文件夹及其子目录下的所有文件),QDirIterator可能吗?

QDirIterator iter( rootDir, QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
QString fileName;
while(iter.hasNext() )
{
   qDebug() << iter.next();
   fileName = iter.fileName();
   // now I have to check if fileName is indeed a .xml extension
}

从上面的代码中可以看出,如果我的迭代器只能跳转到.xml文件,那么我就不必在循环中检查文件扩展名。。有可能吗?

QDirIterator的构造函数之一允许使用nameFilters参数:

QDirIterator::QDirIterator ( const QString & path, const QStringList & nameFilters, QDir::Filters filters = QDir::NoFilter, IteratorFlags flags = NoIteratorFlags )

构造一个可以遍历路径的QDirIterator,使用name筛选器和筛选器。

nameFilters参数没有正确的文档记录,但它很有可能像QDir::setNameFilters中那样工作。

QDirIterator it(rootdir, QStringList() << "*.xml", QDir::Files, QDirIterator::Subdirectories);
while (it.hasNext()) {
    qDebug() << it.next();
}