递归搜索目录返回不正确的值

时间:2012-11-08 08:59:12

标签: qt recursion qdir

从递归搜索目录返回正确的值时出现问题。代码在

之下
#include <QCoreApplication>
#include <QDir>
#include <QString>

#include <QDebug>

static QString findDirectoryPathFromId(const QString &startPath, const QString &id)
{
    QDir dir(startPath);

    QFileInfoList list = dir.entryInfoList(QDir::AllDirs | QDir::NoDotAndDotDot | QDir::NoSymLinks);

    QString path;

    foreach(QFileInfo dinfo, list)
    {
        if (dinfo.fileName() == id)
        {
            qDebug() << "****************Found****************" << dinfo.filePath();
            return dinfo.filePath();

        }

        else
        {
            findDirectoryPathFromId(dinfo.absoluteFilePath(), id);
       }

    }

return QString();

}


int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);

    QStringList args = app.arguments();

    QString path = findDirectoryPathFromId("/home/project/dirtest", args.at(1));

    qDebug() << "Return path" << path;

    return 0;
}

该函数在打印“Found”调试语句时查找目录,但返回值为空字符串。

有人可以解释我在这里做错了什么。

由于

1 个答案:

答案 0 :(得分:0)

我想我已经修好了。

我需要检查递归调用是否找到了目录并将其返回。

 path = findDirectoryPathFromId(dinfo.absoluteFilePath(), id);

        if (!path.isNull())
            return path;

这是否正确。