gpt4 book ai didi

c++ - 在 Qt 中递归地遍历目录,跳过文件夹 "."和 ".."

转载 作者:可可西里 更新时间:2023-11-01 17:35:39 24 4
gpt4 key购买 nike

我在使用 Qt 函数递归遍历目录时遇到了一些麻烦。我正在尝试做什么:

打开指定目录。遍历目录,每次遇到另一个目录时,打开该目录,遍历文件等。

现在,我将如何处理:

QString dir = QFileDialog::getExistingDirectory(this, "Select directory");
if(!dir.isNull()) {
ReadDir(dir);
}

void Mainwindow::ReadDir(QString path) {
QDir dir(path); //Opens the path
QFileInfoList files = dir.entryInfoList(); //Gets the file information
foreach(const QFileInfo &fi, files) { //Loops through the found files.
QString Path = fi.absoluteFilePath(); //Gets the absolute file path
if(fi.isDir()) ReadDir(Path); //Recursively goes through all the directories.
else {
//Do stuff with the found file.
}
}
}

现在,我面临的实际问题是:自然地,entryInfoList 也会返回“.”。和“..”目录。使用此设置,这证明是一个主要问题。

通过进入“.”,它将遍历整个目录两次,甚至无限遍历(因为“.”始终是第一个元素),如果使用“..”,它将对父目录下的所有文件夹重做该过程目录。

我想做得漂亮而圆滑,有什么方法可以解决这个问题,我不知道吗?或者是唯一的方法,我得到普通文件名(没有路径)并检查'。'和“..”?

最佳答案

您应该尝试在您的entryInfoList 中使用QDir::NoDotAndDotDot 过滤器,如documentation 中所述。 .

编辑

  • 不要忘记添加 QDir::Files,或 QDir::DirsQDir::AllFiles 到选取文件和/或目录,如所述in this post .

  • 您可能还想查看 this previous question .

关于c++ - 在 Qt 中递归地遍历目录,跳过文件夹 "."和 "..",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12158565/

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