2015-02-11 114 views
2

我想遍歷只有.xml文件(選定文件夾及其子目錄下的所有文件),這可能與QDirIterator如何使用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文件只比我不必檢查在loop..is文件擴展名這可能嗎?

回答

7

其中constructors of QDirIterator的允許nameFilters論點:

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

構造一個QDirIterator可以遍歷路徑,使用 nameFilters和過濾器。

nameFilters說法是不正確記錄,但它的工作原理就像在QDir::setNameFilters一個很好的機會。

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