遍历指定文件夹的目录?Qt 和 c++

Traversing a directory for specified folders? Qt & c++

本文关键字:Qt c++ 文件夹 遍历      更新时间:2023-10-16

我得到了一个包含以下结构的目录。

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

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

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

任何帮助将不胜感激!

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

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

然后做

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

您可以对其他日期执行相同的操作,然后合并两个QStringLists。

您可以创建一个迭代器并扫描目录树,如下所示:

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
        }
    }
}

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

希望这对您有所帮助。