2012-10-15 87 views
3

我得到了一个具有以下结构的目录。遍历指定文件夹的目录? Qt&C++

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

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

我想问问,如果有人知道我可以如何列出在给定时间在文件夹中的所有文件,而不会构建巨大的if-else构造。 如果可能的话,没有任何其他框架比Qt。

任何帮助将不胜感激!

回答

7

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

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

,然后做

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

可以为其他日期做同样的,然后将二者结合起来QStringLists。

+0

感谢你为这个简单的解决方案!这样我可以轻松地构建一个循环来在该时间段内迭代文件夹。 – samoncode

1

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

希望这可以帮助你莫名其妙。

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