gpt4 book ai didi

c++ - 在 qt 中遍历文件夹中的文件非常慢

转载 作者:行者123 更新时间:2023-11-28 06:24:28 24 4
gpt4 key购买 nike

我正在遍历文件夹中的所有文件(递归遍历其所有子文件夹),但这非常慢..它几乎永远不会返回。我可以把它放在一个线程中,但即便如此,以这种速度它也不实用。这是我的功能

int MainWindow::searchXmlFiles(QString rootDir)
{
xmlFileModel->clear(); // xmlFileModel is QStanardItemModel

int count = 0;

XmlFile xmlFile;
QString xmlFilePath;

QDirIterator iter( rootDir, QStringList() << "*.xml", QDir::Files | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);

QDir dir( ui->lineEditSourceFolder->text() );

while(iter.hasNext() )
{
qDebug() << iter.next();

xmlFilePath = iter.filePath();

xmlCollection = xmlFile.openXmlFile( xmlFilePath );

QStandardItem * item = new QStandardItem( QIcon(":/icons/xmlfile.ico") , dir.relativeFilePath( xmlFilePath) );

xmlFileModel->appendRow( item );

count++;
}

QString fileCount = QString("Total of %1 file(s) will be converted from `%2` folder").arg( QString::number(count), rootDir);

ui->labelXmlFileCount->setText( fileCount );

return count;
}

这么慢的速度真的是预料之中的吗?有没有办法更快地做同样的事情?

更新

在 Jeremey 发表评论后,如果我评论循环内的所有工作(xmlFile.openXmlFile() 和 QStandardItem 创建),它会变得相当快,大约需要 3 秒。如果我将 QStandardItem 的创建留在那里,大约需要 7 秒/

最佳答案

您可以使用 QDir::entryList() 一次获取完整的 XML 文件列表,然后遍历文件名的 QStringList。

关于c++ - 在 qt 中遍历文件夹中的文件非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28746126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com