【问题标题】:Traversing a directory for specified folders? Qt & c++遍历特定文件夹的目录? Qt 和 C++
【发布时间】:2012-10-05 12:01:10
【问题描述】:

我有一个具有以下结构的目录。

Name-
   -Year1
      -Month1
        -Day1
          -file1
        -..
      -...
   -Year2
      -Month1
      -...
   -...

现在我有 2 个日期 2009-01-02 和 2010-02-03。

我想问是否有人知道我如何在给定时间内列出文件夹中的所有文件,而无需构建巨大的 if-else 结构。 如果可能的话,除了 Qt 之外没有任何其他框架。

任何帮助将不胜感激!

【问题讨论】:

    标签: c++ qt directory


    【解决方案1】:

    查看QDir::entryList(),它将列出文件夹中的所有文件。您可以像这样构造目录路径:

    QString path = QDir::currentPath() + "/" +
                   QString::fromNumber(year) + "/" +
                   QString::fromNumber(month) + "/" +
                   QString::fromNumber(day);
    

    然后做

    QDir dir(path);
    QStringList files = dir.entryList();
    

    您可以对另一个日期执行相同的操作,然后将两个 QStringList 组合起来。

    【讨论】:

    • 感谢您提供这个简单的解决方案!这样我可以很容易地建立一个循环来迭代时间段内的文件夹。
    【解决方案2】:

    您可以创建一个迭代器并像这样扫描目录树:

    QDir dir("YOUR_PATH_BASE"); //"Name"
    if (dir.exists())
    {
        foreach(QFileInfo info, dir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::AllDirs ))
        {
            if (info.isFile())
            {
                //do something
            }
            if (info.isDir())
            {
                //scan again
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用QDir 类来执行此操作。在那里,您可以递归地遍历所有子文件夹。为此,您可以使用entryInfoList 方法。它返回目录中所有文件和目录的QFileInfo 对象列表。对于此列表中的每个条目,您可以检查它是 directory 还是 file。如果它是一个目录,那么你必须更深入。

      希望这对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2012-08-22
        • 2020-06-28
        • 1970-01-01
        • 2019-01-21
        • 2019-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多