3

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

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

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

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

任何帮助将不胜感激!

4

3 回答 3

8

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

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

然后做

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

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

于 2012-10-15T14:01:29.800 回答
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
        }
    }
}
于 2012-10-15T15:24:27.223 回答
1

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

希望这对您有所帮助。

于 2012-10-15T14:01:40.133 回答