我只想遍历.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文件,而不必在循环中检查文件扩展名,是否可以?

最佳答案

constructors of QDirIterator之一允许使用nameFilters参数:

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


nameFilters参数没有正确记录,但是很有可能像QDir::setNameFilters中那样工作。
QDirIterator it(rootdir, QStringList() << "*.xml", QDir::Files, QDirIterator::Subdirectories);
while (it.hasNext()) {
    qDebug() << it.next();
}

关于c++ - 如何使用QDirIterator仅遍历某些类型的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28463090/

10-12 14:47