遍历目录以查找指定文件夹?Qt和C++

3
我得到了一个具有以下结构的目录。
Name-
   -Year1
      -Month1
        -Day1
          -file1
        -..
      -...
   -Year2
      -Month1
      -...
   -...

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

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

任何帮助将不胜感激!

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合并。

谢谢您提供这个简单的解决方案!这样我就可以轻松地构建一个循环来迭代时间段内的文件夹。 - samoncode

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

1

您可以使用 QDir 类来完成此操作。在那里,您可以递归迭代所有子文件夹。为此,您可以使用 entryInfoList 方法。它返回一个QFileInfo对象列表,其中包含目录中的所有文件和目录。对于此列表中的每个条目,您可以检查它是目录还是文件。如果它是一个目录,则必须进一步深入。

希望这能在某种程度上帮助您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接