遍历指定文件夹的目录? Qt& C ++

时间:2012-10-15 13:41:08

标签: c++ qt directory

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

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

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

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

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:7)

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

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

然后再做

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

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

答案 1 :(得分: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
        }
    }
}

答案 2 :(得分:1)

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

希望这能以某种方式帮助你。